Angularjs 指令正在删除输入字段的值

Angularjs 指令正在删除输入字段的值,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个简单的角度问题——我想这可能是因为这里的树木看不见树木 我有一个附加了指令的输入字段。最终目的是比较新旧数据并显示弹出窗口。但是,只要我将directive属性添加到输入字段,该值就会消失: 请点击这里: HTML: 如果转到Plunk并删除cm popover属性,则输入字段将填充模型中的值。添加属性后,该值将消失,尽管模型仍在具有正确值的范围内。在指令中,您声明了一个隔离范围。这个输入的作用域现在是这个隔离作用域,因为它是指令元素。它正在查找隔离作用域中不存在的currentEdit

我有一个简单的角度问题——我想这可能是因为这里的树木看不见树木

我有一个附加了指令的输入字段。最终目的是比较新旧数据并显示弹出窗口。但是,只要我将directive属性添加到输入字段,该值就会消失:

请点击这里:

HTML:


如果转到Plunk并删除cm popover属性,则输入字段将填充模型中的值。添加属性后,该值将消失,尽管模型仍在具有正确值的范围内。

在指令中,您声明了一个隔离范围。这个输入的作用域现在是这个隔离作用域,因为它是指令元素。它正在查找隔离作用域中不存在的currentEditItem对象

ngModel
不会为自己创建新的隔离作用域,因此它可以
$watch
而无需在其内部代码中硬编码
$parent
。 但是,在同一个DOM节点上添加另一个指令,为其自身创建一个独立的作用域。再加上在DOM节点上只能有一个单独的作用域,并且基本上强制
ngModel
使用/使用创建的相同作用域
cmpover

因此,在编写
ng model=“currentEditItem.strFirstName”
时,实际上是在
cmpover
指令中寻址
$scope
,而不是在(父)控制器中寻址。您可以使用
ng model=“$parent.currentEditItem.strFirstName”
-检查这种情况,它将起作用

有一个相当长的对话,有很多可能的解决办法和解决方案,导致了一个实际的问题


长话短说:至少更新到AngularJS 1.2.0,这将起作用。

Ah!现在这是有道理的。升级意味着要测试大量的代码,所以我想解决方法是可行的。谢谢
First Name:
<input type='text' ng-model='currentEditItem.strFirstName' name='strFirstName' id='strFirstName' 
cm-popover="currentEditItem.personOldData.strFirstName"/>

<br><br>
ngModel: {{currentEditItem.strFirstName}} <br>
cmPopover: {{currentEditItem.personOldData.strFirstName}}
var app = angular.module('app', []);

app.controller('Ctrl', function ($scope) {

    $scope.currentEditItem = {};
    $scope.currentEditItem.strFirstName = "Bob";
    $scope.currentEditItem.personOldData = {};
    $scope.currentEditItem.personOldData.strFirstName = "Roger";    
});


app.directive("cmPopover", function () {
    return {
        scope: {
            ngModel: "=",
            cmPopover: "="
        },
        link: function (scope, elem, attrs) {
            console.log("ngModel", scope.ngModel);
            console.log("cmPopover", scope.cmPopover);
        }
    }
});