Angularjs 角度指令双向绑定问题
我正在为一些新增功能创建自定义输入指令Angularjs 角度指令双向绑定问题,angularjs,data-binding,angularjs-directive,Angularjs,Data Binding,Angularjs Directive,我正在为一些新增功能创建自定义输入指令 app.directive('myTextInput', [ function () { var directive = {}; directive.restrict = 'A'; directive.scope = { textModel: '=' }; directive.link = function ($scope, element, a
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;
}]);
控制器作用域具有变量$scope.myScopeVariable=;定义
当我这样做的时候。
任何在指令输入中键入的内容都可以在标记中打印。
这说明它正在更新
问题是
在父范围中。我有一个方法,可以在点击按钮时执行
$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也是如此
知道这里发生了什么吗?这是因为myScopeVariable包含字符串形式的值。
因此,如果您更改指令的from textbox的值。它不会被反映出来
在第二种方法中,您指的是对象。所以,无论何时更改对象的值,都会调用其相关的watch方法。值将被更新。我的文本输入是一个指令,因此他有自己的作用域,因此模型myscope变量不受父对象的监视
试试这个:
类型:{{myScopeVariable}}
这不是最好的做法,但可能会奏效。Hrmm,我试图复制这个问题,但在我看来没问题。
<div my-text-input text-model="myScopeVariable.key"></div>
<span>TYPED : {{myScopeVariable.key}}</span>