value = this._bindTarget(this._target, function(target) { if(_.isSubscribable(target) && self.bind()) { var inOld = _.indexOf(disposalCandidates, target); if(inOld >= 0) disposalCandidates[inOld] = undefined; //Don't want to dispose this subscription, as it's still in use else self._subscriptions.push(target.subscribe(self.targetUpdated, self)); } });
_subscribeToTarget: function(target, subscriptions) { if(_.isSubscribable(target) && this.bind()) { if(_.pluck(subscriptions, 'target').indexOf(target) < 0) //TODO seems slow? subscriptions.push(target.subscribe(this.targetUpdated, this)); return true; } return false; }
'isObservable': function(value) { return _.isSubscribable(value) && value.__is_observable__ === true; }