编程语言
首页 > 编程语言> > javascript-从隔离范围内删除引用的范围对象-angular.js

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