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>