我想在我的控制器中创建一个方法,将我的控制器$ scope中的不同变量设置为null。所以我在我的控制器中有这个:
FootCreator.controller('FooController', function($scope) {
$scope.zoo = {
id: 1,
name: 'Lorem',
};
$scope.foo = {
id: 2,
title: 'bar',
};
$scope.deleteProperty = function(property) {
property = null;
};
});
在我的HTML中,我这样称呼它(例如):
<a ng-click="deleteProperty(zoo)" class="remove icon-remove" title="Remove"></a>
当我在console.log()时,$ scope.zoo没有设置为null。我想我必须做点坏事,但找不到什么。我试着这样做,不要有deleteZoo(),deleteFoo()等。
感谢您的帮助/提示!
答案 0 :(得分:3)
在deleteProperty
方法中,您只需将property
参数设置为null
,这绝不会对您的范围产生任何影响。
您在此处所做的简单示例是:
$scope.zoo = { id: 1, name: 'Lorem' };
var property = $scope.zoo;
property = null;
console.log($scope.zoo); // previous line had no effect on $scope.zoo
我建议将属性名称作为字符串而不是属性本身传递。然后你可以这样做:
$scope.deleteProperty = function(property) {
delete $scope[property];
};
<a ng-click="deleteProperty('zoo')" class="remove icon-remove"
title="Remove"></a>
如果你真的想要传递属性本身(就像你在HTML中那样),你需要循环遍历所有属性以找到匹配的属性:
$scope.deleteProperty = function(property) {
for (var p in $scope) {
if ($scope.hasOwnProperty(p) && $scope[p] === property) {
delete $scope[p];
}
}
};