2014-06-24 52 views
0

我無法使數據綁定在此指令中起作用。當我在事件處理程序中更改它們時,變量未被正確綁定,數據綁定在指令中不起作用

我在做什麼錯? >Test Fiddle

var myApp = angular.module('myApp', []) 
    .directive('inputTest', function() { 
    return { 
     restrict: 'E', 
     template: '<div class="input-group">\ 
        <input type="text" class="form-control" />\ 
        <br>child scope: {{myValue}}\ 
        </div>', 
     scope: { 
      myValue: '=', 
     }, 
     link: function (scope, element, attrs) { 
      $(element).on('click', function (e) { 
       alert('c'); 
       scope.myValue = 'clicked'; 
      }); 
      scope.myValue = 'not clicked'; 
     }, 
    }; 
}) 

function MyCtrl($scope) { 
    $scope.myValue = 'parent value'; 
} 

HTML

<div ng-controller="MyCtrl">parent scope: {{myValue}} 
    <input-test my-value="myValue"></input-test> 
</div> 
+0

你得到在瀏覽器控制檯的任何錯誤? –

+0

不,檢查小提琴... – xcorat

回答

2
  1. 不要忘記在事件處理結束調用$scope.$apply()
  2. 由於原型繼承的工作原理,第一級綁定可能無法按預期工作。如果你嘗試的第一個點,仍然沒有結果,嘗試把myValue更深一層:

    $scope.data.myValue = 'parent value'; 
    

    和:

    <input-test my-value="data.myValue"></input-test> 
    
+0

Thx,行'scope.myValue ='沒有點擊';'實際上工作,只有事件處理程序中沒有。 – xcorat

+0

你真的把'$ apply()'調用放在事件處理程序中嗎?工作小提琴:http://jsfiddle.net/qHRxA/1/ –

+0

不,我沒有大聲笑。但不明白爲什麼它在事件處理程序外部工作,但不在內部...... – xcorat