【发布时间】:2014-10-17 17:38:33
【问题描述】:
我正在为一些附加功能创建自定义输入指令。
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()。
知道这里发生了什么吗?
【问题讨论】:
-
嗯,我尝试复制问题,但对我来说看起来不错。 plnkr.co/edit/SyRPmIvxvnAw7CPBv2NJ?p=preview
标签: angularjs data-binding angularjs-directive