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