2013-05-09 91 views

回答

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(); 
    }); 
} 

fiddle

0

你说得对,那不是正确的做法。 找出$watch()功能,特别是在directives中使用时。

+1

随着手表我可以看变量的一些变化,然后做一些行动,但我不想知道什么时候'event.times'改变了,我想自己改变它。 – Gacha 2013-05-09 13:18:36

0

没有必要在这里的eval使用,你可以这样做:

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

但是你必须确保在域中存在一个事件对象使用此指令之前,我不认为它是对于依赖其他地方设置的数据的指令是有好处的。

你究竟在努力实现什么?

+0

如果我这样做,那么没有必要通过'times-field'作为属性,我想要动态属性。 – Gacha 2013-05-09 15:22:34

+0

是的你是对的,由于某种原因,它没有点击你实际上传递的字段名称。这绝对是做到这一点的正确方法,而@marks实现就是你想要的。 – 2013-05-09 15:29:16