Packages/lsd/Source/Mixin/Target.js in lsd_rails-0.1.2 vs Packages/lsd/Source/Mixin/Target.js in lsd_rails-0.1.3

- old
+ new

@@ -24,16 +24,21 @@ options: { chain: { target: function() { if (!this.attributes.target) return; return this.parseTargetSelector(this.attributes.target).map(function(chain) { - if (!chain.action) chain.action = this.getTargetAction(); - if (!chain.action) return; + chain = Object.append({}, chain); + if (!chain.action && !(chain.action = this.getTargetAction())) return; if (chain.selector) { - chain.target = function() { - return this.getElements(chain.selector); - }.bind(this); + chain.target = function(callback, state, revert) { + if (chain.selector.expressions[0][0].combinator.charAt(0) != '$') { + this[(state == true && revert) ? 'unwatch' : 'watch'](chain.selector, callback); + return true; + } else { + return this.getElements(chain.selector); + } + }.bind(this) }; switch (chain.keyword) { case "before": chain.priority = 50; break; @@ -94,9 +99,9 @@ } return expressions; } }; - var Keywords = Parser.Keywords = Array.fast('if', 'then', 'else', 'or', 'and', 'before'); + var Keywords = Parser.Keywords = Array.object('if', 'then', 'else', 'or', 'and', 'before', 'do'); }(); LSD.Behavior.define('[target]', LSD.Mixin.Target); \ No newline at end of file