我正在爲某些添加的功能創建自定義輸入指令。角度指令雙向綁定問題
app.directive('myTextInput', [
function() {
var directive = {};
directive.restrict = 'A';
directive.scope = {
textModel: '='
};
directive.link = function ($scope, element, attrs) {
// FUnctionality
};
directive.template = '<input ng-model="textModel" type="text">';
return directive;
}]);
和所用的分離的範圍屬性textModel
爲雙向綁定。 和父範圍HTML是:
<div my-text-input text-model="myScopeVariable"></div>
<span>TYPED : {{myScopeVariable}}</span>
控制器範圍具有定義的變量$scope.myScopeVariable="";
。
當我這樣做。 在指令輸入中輸入的內容可以在<span>
標籤中打印。 這告訴它正在更新。
問題是。
在父範圍內。我有一個方法,將執行按鈕單擊。
$scope.doSomething = function(){
console.log($scope.myScopeVariable);
};
點擊按鈕。日誌是空的。這應該是指令輸入中輸入的內容。
這就奇怪了
現在,如果定義範圍變量
$scope.myScopeVariable = {key:''};
和在HTML中使用如
<div my-text-input text-model="myScopeVariable.key"></div>
<span>TYPED : {{myScopeVariable.key}}</span>
然後它工作的每一個地方。即使在以前說的功能doSomething()
。
任何想法發生了什麼?
Hrmm,我試着重現這個問題,但對我來說看起來很好。 http://plnkr.co/edit/SyRPmIvxvnAw7CPBv2NJ?p=preview – CozyAzure 2014-10-18 06:42:17