diff --git a/src/lib/bind/accessors.html b/src/lib/bind/accessors.html
index 352e8e6d02..1b854b982e 100644
--- a/src/lib/bind/accessors.html
+++ b/src/lib/bind/accessors.html
@@ -14,10 +14,7 @@
_dataEventCache: {},
// for prototypes (usually)
-
prepareModel: function(model) {
- model._propertyEffects = {};
- model._bindListeners = [];
Polymer.Base.mixin(model, this._modelApi);
},
@@ -106,6 +103,9 @@
// a prepared model can acquire effects
ensurePropertyEffects: function(model, property) {
+ if (!model._propertyEffects) {
+ model._propertyEffects = {};
+ }
var fx = model._propertyEffects[property];
if (!fx) {
fx = model._propertyEffects[property] = [];
@@ -115,11 +115,13 @@
addPropertyEffect: function(model, property, kind, effect) {
var fx = this.ensurePropertyEffects(model, property);
- fx.push({
+ var propEffect = {
kind: kind,
effect: effect,
fn: Polymer.Bind['_' + kind + 'Effect']
- });
+ };
+ fx.push(propEffect);
+ return propEffect;
},
createBindings: function(model) {
@@ -193,6 +195,9 @@
},
_addAnnotatedListener: function(model, index, property, path, event) {
+ if (!model._bindListeners) {
+ model._bindListeners = [];
+ }
var fn = this._notedListenerFactory(property, path,
this._isStructured(path));
var eventName = event ||