2014-01-10 145 views
0

通過指令分配新值的最佳方式是什麼?雙向數據綁定。更改指令中的範圍值

我在這裏有一個小提琴,我試過。 http://jsfiddle.net/user1572526/grLfD/2/。但它並不奏效。

我的指令:

myApp.directive('highlighter', function() { 
    return { 
     restrict: 'A', 
     replace: true, 
       scope: { 
        activeInput: '=' 
       }, 
     link: function (scope, element, attrs) { 
      element.bind('click', function() { 
       scope.activeInput = attrs.setInput 
      }) 
     } 
    } 
}); 

而且我的控制器:

function MyCtrl($scope) { 
      $scope.active = { 
       value : true 
      }; 
} 

而我的觀點:

<h1 highlighter active-input="active.value" set-input="false">Click me to update Value in scope: {{active}}</h1> 

所以我要做的就是更新與給定的scope.active屬性setInput。

任何想法我在做什麼錯在這裏?

+0

[Using scope。$ watch and scope。$ apply](http://stackoverflow.com/questions/15112584/using-scope-watch-and-scope-apply) – Stewie

回答

2

隨着element.bind你離開Angular的領域,所以你需要告訴Angular發生了什麼事情。你這樣做,與scope.$apply功能:

scope.$apply(function(){ 
    scope.activeInput = attrs.setInput; 
}); 

這裏是一個updated jsfiddle

+0

@DavinTryon感謝您的輸入。 – Stewie

+0

:),當你的答案出現時,在剪貼板中有鏈接! –

+0

@DavinTryon我想這是一場比賽。還是一個非常好的姿態,以一個例子來更新我的答案。但最終,問題可能會以無用的方式關閉。 :) – Stewie