Javascript 当不在DOM中时,如何解除绑定(删除)角度模型
下面是我正在努力实现的一个简单演示Javascript 当不在DOM中时,如何解除绑定(删除)角度模型,javascript,angularjs,dom,unbind,Javascript,Angularjs,Dom,Unbind,下面是我正在努力实现的一个简单演示 <div ng-controller="MyCtrl"> <input type="button" ng-click="a=!a" value="toggle a"/> <div ng-if="a"> <input type="text" ng-model="del.a1" />{{del}} </div> <input type="t
<div ng-controller="MyCtrl">
<input type="button" ng-click="a=!a" value="toggle a"/>
<div ng-if="a">
<input type="text" ng-model="del.a1" />{{del}}
</div>
<input type="text" ng-model="del.a2" />
{{del}}
</div>
{{del}}
{{del}}
最初,del的值为{},如果为false,则属性a1处于ng-if条件下。
测试用例:
步骤1:将ng if切换为true,以便a1可见
步骤2:在a1中输入一些值(您可以随时在属性a2中输入值)
第3步:现在,如果我再次将ng if切换为false,我要寻找的是属性a1将从模型中移除(即,我只想绑定那些在DOM上可见的模型),如
下面是上述测试用例的示例
我想问题在于模型被用作对象。但我只需要一个作为对象的模型解决方案,因为我已经在此基础上做了很多编码
希望我清楚这个问题
请帮助您可以使用
$scope.$watch查看a
值,并在a设置为false时从del对象中删除a1键
var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', function ($scope) {
$scope.del = {};
$scope.a = false;
$scope.$watch('a', function(value) {
if (!value) {
delete $scope.del['a1'];
}
});
})
请参阅下面的工作演示
var myApp=angular.module('app',[]);
myApp.controller('MyCtrl',函数($scope){
$scope.del={};
$scope.a=false;
$scope.$watch('a',函数(值){
如果(!值){
删除$scope.del['a1'];
}
});
})
{{del}}
{{del}}
在您的示例中,仅监视DOM中可见的模型
如果您的意思是希望从对象中删除模型值,那么您需要在“a”上安装一个手表,它知道要从模型中删除哪些值。不是您要求的100%,但似乎您可以在需要时删除/重置del
上的a1
属性。如果这不能解决你的问题,那么考虑用更详细的杰克表来更新你的问题不能解决我的应用中的问题。我有一个对象,它有将近500到600个属性和它的动态赋值,所以基本上我只想让对象与那些在DOMsince My上可见的属性保持一致。模型是动态的,规模巨大,我很难一个接一个地删除属性。@VinodLouis在这种情况下,如何在查看页面上放置500-600个输入?我实际上定义了一个空对象,如answer={},然后运行时模型作为answer.a answer.b等等…@VinodLouis,这样您就可以以类似的方式删除$watch函数中的对象键