Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除angular2中的数据绑定_Javascript_Data Binding_Angular - Fatal编程技术网

Javascript 删除angular2中的数据绑定

Javascript 删除angular2中的数据绑定,javascript,data-binding,angular,Javascript,Data Binding,Angular,Angular 2数据绑定很棒,但我似乎找不到一种Angular 2方法来删除特定变量上的数据绑定。我这样做的原因是我开始将我的应用程序连接到索引数据库,它可以工作,但我不能允许临时缓存(只是所有索引数据库值的数组)受数据绑定的约束(如果是,那么临时缓存将不再镜像数据库)。我的数据库使用angular2服务。现在我已经找到了一种删除数据绑定的方法,但这并不完全是我的代码 app.copy=function(item){ return JSON.parse(JSON.stringify(i

Angular 2数据绑定很棒,但我似乎找不到一种Angular 2方法来删除特定变量上的数据绑定。我这样做的原因是我开始将我的应用程序连接到索引数据库,它可以工作,但我不能允许临时缓存(只是所有索引数据库值的数组)受数据绑定的约束(如果是,那么临时缓存将不再镜像数据库)。我的数据库使用angular2服务。现在我已经找到了一种删除数据绑定的方法,但这并不完全是我的代码

app.copy=function(item){
    return JSON.parse(JSON.stringify(item,app.replacer),app.reviver);
}
app.reviver=function(key,value){
    if(value.fn){
        value=new Function(value.parameters,value.body);
    }else if(key==="time"){
        value= new Date(value);
    }
    return value;
};
app.replacer=function(key,value){
    if(typeof value ==="function"){
        value=value.toString(); 
        value={
            fn:true,
            parameters:value.match(/\(([\s\S]*?)\)/)[1].replace(/[\s\r\/\*]/g,""),
            body:value.match(/\{([\s\S]*)\}/)[1].replace(/[\t\r\n]/g,"")
        };
    }
    return value;
};
就像我说的那样,它很管用,但并不漂亮。我可以在变量离开缓存之前运行app.copy,这样它们就不会将数据绑定到任何东西。我想知道是否有更简洁的方法告诉angular 2这个变量不应该是数据绑定的。如果不是这样的话,至少我能为其他人找到我的解决方案

如果强制建立“绑定”,则可以强制停止绑定。Angular2目前不支持强制取消声明性绑定

  • 仅将视图绑定到零部件的字段

  • 在服务中使用在值更改时触发事件的可观察对象

  • 在组件中,当服务中的值发生变化时,订阅可观察的并更新组件中的字段

  • 当组件中的值更改时,更新服务中的值


问题在于我的变量绑定到了服务。服务由多个指令访问,其中一些指令使用从数据库获取的变量进入视图,这意味着如果查看整个链,它最终看起来像服务变量=>组件变量=>其他一些已更改的变量。现在我不知道为什么,因为我没有显式地绑定变量,但出于某种原因,因为当底部变量发生变化时,服务变量也发生了变化。我能够绕过该链的唯一方法是使用json stringify和parse创建一个新对象。根据您提供的信息,很难判断。我也不习惯在JS中使用Angular。我会把整个数据库脚本放上去,但它大约有200行长。我知道angular 1中有angular.copy,它基本上实现了我想要的功能,在没有数据绑定的情况下复制了对象,但angular 2没有我发现的等价物