2015-07-01 78 views
1

我想要綁定一個指令中的變量並使用新的Angular 1.4 bindToController語法從指令中修改它。使用新的bindToController語法時,雙向綁定不起作用

HTML:

<body ng-app="mainModule" ng-controller="mainController"> 
    <h2>{{boundVar}}</h2> 
<my-directive ng-model="boundVar"></my-directive> 

的Javascript:

angular.module('directiveModule', []).directive('myDirective', 
function() 
{ 
    var r = 
    { 
     scope: true, 
     bindToController: { value: '=ngModel' }, 
     template: '<h2>The value is: {{ctrl.value}}</h2><br><button ng-click="ctrl.increment()">Increment</button>', 
     controllerAs: 'ctrl', 
     controller: function() 
     { 
      this.increment = function() { this.value++; }; 
     } 
    }; 

    return r; 
}); 

angular.module('mainModule', ['directiveModule']).controller('mainController', 
function($scope) 
{ 
    $scope.boundVar = 10; 
}); 

當頁面初始加載,你看到變量 'boundVar' 爲有效綁定:

enter image description here

但是當你按下按鈕時,只有內部變量會改變,所以雙向綁定好像不工作:

enter image description here

我缺少什麼?

謝謝!

+0

嘗試bindToController:{boundVar:'='}。你也沒有使用正確的語法,在你的情況下,如果你保留你的原始代碼,html應該看起來像 ajmajmajma

回答

0

我相信這只是雙向綁定通常不會按預期工作的常見情況,如果您不使用'。'。在你的約束。你不應該雙向綁定到基元。即使在新的功能下,同樣的原則仍然適用。

請參閱https://stackoverflow.com/a/18128502/246811以獲得更好的解釋。

相關問題