remove the relience of parser an special self object, now passing generic self

This commit is contained in:
Misko Hevery 2010-05-30 16:11:00 -07:00
parent 0e88e35e5c
commit 0d87208553
4 changed files with 11 additions and 19 deletions

View file

@ -17,7 +17,7 @@ Lexer.OPERATORS = {
'/':function(self, a,b){return a/b;},
'%':function(self, a,b){return a%b;},
'^':function(self, a,b){return a^b;},
'=':function(self, a,b){return self.scope.set(a, b);},
'=':function(self, a,b){return setter(self, a, b);},
'==':function(self, a,b){return a==b;},
'!=':function(self, a,b){return a!=b;},
'<':function(self, a,b){return a<b;},
@ -152,7 +152,7 @@ Lexer.prototype = {
var fn = Lexer.OPERATORS[ident];
if (!fn) {
fn = function(self){
return self.scope.get(ident);
return getter(self, ident);
};
fn.isAssignable = ident;
}
@ -372,7 +372,7 @@ Parser.prototype = {
for ( var i = 0; i < argsFn.length; i++) {
args.push(argsFn[i](self));
}
return fn.apply(self.state, args);
return fn.apply(self, args);
};
return function(){
return fnInvoke;
@ -551,12 +551,12 @@ Parser.prototype = {
this.consume("}");
return function(self) {
return function($){
var scope = createScope(self.state);
var scope = createScope(self);
scope['$'] = $;
for ( var i = 0; i < args.length; i++) {
scope.$set(args[i], arguments[i]);
setter(scope, args[i], arguments[i]);
}
return statements({scope:{get:scope.$get, set:scope.$set}});
return statements(scope);
};
};
},
@ -680,11 +680,11 @@ Parser.prototype = {
}
return function(self) {
var Entity = self.datastore.entity(entity, defaults);
self.scope.set(entity, Entity);
setter(self, entity, Entity);
if (instance) {
var document = Entity();
document['$$anchor'] = instance;
self.scope.set(instance, document);
setter(self, instance, document);
return "$anchor." + instance + ":{" +
instance + "=" + entity + ".load($anchor." + instance + ");" +
instance + ".$$anchor=" + angular['String']['quote'](instance) + ";" +

View file

@ -60,14 +60,7 @@ function expressionCompile(exp){
// TODO(remove this hack)
function parserNewScopeAdapter(fn) {
return function(){
var self = this;
return fn({
state: self,
scope: {
set: function(key, value){ return setter(self, key, value);},
get: function(key) { return getter(self, key); }
}
});
return fn(this);
};
}

View file

@ -198,10 +198,9 @@ angularDirective("ng-watch", function(expression, element){
return function(element){
var self = this;
new Parser(expression).watch()({
scope:{get: self.$get, set: self.$set},
addListener:function(watch, exp){
self.$watch(watch, function(){
return exp({scope:{get: self.$get, set: self.$set}, state:self});
return exp(self);
}, element);
}
});

View file

@ -80,7 +80,7 @@ function valueAccessor(scope, element) {
validateScope = extend(new (extend(function(){}, {prototype:scope}))(), {$element:element});
error = required && !value ?
"Required" :
(value ? validator({state:validateScope, scope:{get:validateScope.$get, set:validateScope.$set}}, value) : null);
(value ? validator(validateScope, value) : null);
elementError(element, NG_VALIDATION_ERROR, error);
lastError = error;
if (error) {