我正在为某些添加的功能创建自定义输入指令。角度指令双向绑定问题
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