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