Javascript 按名称访问指令中的范围变量,避免使用eval

Javascript 按名称访问指令中的范围变量,避免使用eval,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我对angularJs不熟悉,感觉不太对劲。当您试图模糊字段时,它应该增加事件时间,目前我是通过第10行的$apply来实现的,所以我想问有没有更好的方法来实现这一点?可能是这样的var times=scope.$get(attrs.timesField)

我对angularJs不熟悉,感觉不太对劲。当您试图模糊字段时,它应该增加
事件时间
,目前我是通过第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();
   });
}