2013-05-09 55 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