javascript-从隔离范围内删除引用的范围对象-angular.js
作者:互联网
我有一个angular指令,使用=运算符将隔离的作用域与其父作用域的属性双向绑定:
app.directive('nestedDirective', function(){
return {
scope: {
model: '='
},
link: function($scope){
...
}
}
});
我了解对$scope.model的任何更改都将传播到父范围.但是,删除$scope.model不会传播. delete($scope.model)因此,我的问题是:如何删除引用的变量并将删除的内容传播到父范围.
This codepen应该说明我试图做的(甚至不看示波器触发事件)
解决方法:
这个问题非常非常频繁地被问到,所以我将从wiki article开始.
基本上,遵循“点规则”:如果需要(直接)修改属性,请将其范围设置在另一个属性下,以便JS原型继承可以加入:
var model = {prop: "val"};
var a = {model: model};
model = null;
console.log(a.model.prop); // prints val
var b = {a: a};
a.model = null;
console.log(b.a.model); // prints null
这里是一样的(即使它不使用原型继承来使事情保持简单).
标签:angularjs,model-binding,javascript 来源: https://codeday.me/bug/20191122/2059041.html