0

我是 angularJs 的新手,当前工作的示例(小提琴)感觉不对。当您尝试模糊它应该增加的字段时event.times,目前我$apply在第 10 行这样做,所以我问有没有更好的方法来实现这一点?也许像这样var times = scope.$get(attrs.timesField);然后scope.$apply(function(){ times += 1; });

4

3 回答 3

3

每当指令不使用隔离作用域并且您使用属性指定作用域属性,并且想要更改该属性的值时,请使用$parse

<input custom-field times-field="event.times" ng-model="event.title" type="text">

link: function (scope, element, attrs){
   var model = $parse(attrs.timesField);
   element.bind('blur', function(){
       model.assign(scope, model(scope) + 1);
       scope.$apply();
   });
}

小提琴

于 2013-05-09T15:11:04.850 回答
0

你是对的,这不是做这样的事情的正确方法。找出$watch()函数,尤其是在指令中使用它时。

于 2013-05-09T13:14:53.273 回答
0

这里不需要使用 eval ,你可以这样做:

           scope.$apply(function(){
               scope.event.times++;
           });

但是,在使用此指令之前,您必须确保事件对象存在于范围内,并且我认为指令依赖于在其他地方设置的数据并不好。

你到底想达到什么目的?

于 2013-05-09T14:33:49.807 回答