Javascript 按名称访问指令中的范围变量,避免使用eval
我对angularJs不熟悉,感觉不太对劲。当您试图模糊字段时,它应该增加Javascript 按名称访问指令中的范围变量,避免使用eval,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我对angularJs不熟悉,感觉不太对劲。当您试图模糊字段时,它应该增加事件时间,目前我是通过第10行的$apply来实现的,所以我想问有没有更好的方法来实现这一点?可能是这样的var times=scope.$get(attrs.timesField)
事件时间
,目前我是通过第10行的$apply
来实现的,所以我想问有没有更好的方法来实现这一点?可能是这样的var times=scope.$get(attrs.timesField)然后是scope.$apply(函数(){times+=1;})代码>你是对的,那样做是不对的。
找出函数,尤其是在中使用时。你是对的,这样做不正确。
查找函数,尤其是在中使用时。此处无需使用eval,您可以执行以下操作:
scope.$apply(function(){
scope.event.times++;
});
但是,在使用该指令之前,必须确保作用域上存在事件对象,并且我认为指令依赖在其他地方设置的数据是不好的
您真正想要实现的是什么?这里不需要使用eval,您可以这样做:
scope.$apply(function(){
scope.event.times++;
});
但是,在使用该指令之前,必须确保作用域上存在事件对象,并且我认为指令依赖在其他地方设置的数据是不好的
您实际想要实现什么?每当指令不使用隔离作用域,并且您使用属性指定作用域属性,并且您想要更改该属性的值时,请使用:
只要指令不使用隔离作用域,并且您使用属性指定了作用域属性,并且要更改该属性的值,请使用:
使用watch,我可以观察变量的一些变化,然后执行一些操作,但我不想知道事件.times
何时更改,我想自己更改它。使用watch,我可以观察变量的一些变化,然后执行一些操作,但我不想知道事件.times
何时更改,我想自己更改它。如果我这样做,那么将时间字段作为属性传递是没有意义的,我需要动态属性。是的,你是对的,出于某种原因,它没有单击你实际传递的字段名称。这绝对是正确的做法,@marks实现就是你想要的。如果我这样做,那么就没有必要将times field
作为属性传递,我想要动态属性。是的,你是对的,出于某种原因,它没有点击你实际传递的字段名称。这绝对是正确的方法,@marks实现就是您想要的。
link: function (scope, element, attrs){
var model = $parse(attrs.timesField);
element.bind('blur', function(){
model.assign(scope, model(scope) + 1);
scope.$apply();
});
}