2014-01-10 2 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

Возможный дубликат [Использование области. $ Watch и scope. $ Apply] (http://stackoverflow.com/questions/15112584/using-scope-watch-and-scope-apply) – Stewie

ответ

2

С element.bind вы покидаете царство Углового, поэтому вам нужно сказать Угловой, что что-то случилось. Вы делаете это с scope.$apply функции:

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

здесь является updated jsfiddle.

+0

@DavinTryon Спасибо за ваш вклад , – Stewie

+0

:), имел ссылку в буфер обмена, когда появился ваш ответ! –

+0

@ DavinTryon Я понял, что это гонка. Еще очень хороший жест от вас, чтобы обновить мой ответ на примере. Но в конце концов, вопрос, вероятно, будет закрыт как обман. :) – Stewie

Смежные вопросы