我有一个范围变量$scope.object = { prop: 12345 }
其属性我删除并将它们设置为undefined
。从范围变量删除属性
<button ng-show="object.prop" ng-click="object.prop = undefined"/>
是否有从模板内部和外部的控制器,而不是它们的值设置为undefined
附加功能删除特性的可能性?
我有一个范围变量$scope.object = { prop: 12345 }
其属性我删除并将它们设置为undefined
。从范围变量删除属性
<button ng-show="object.prop" ng-click="object.prop = undefined"/>
是否有从模板内部和外部的控制器,而不是它们的值设置为undefined
附加功能删除特性的可能性?
是......也就是说,你可以改变变量的值...也许这将是一个帮助你
试试这个:
<button ng-show="object.prop" ng-click="object.prop = 'undefined'"/>
,或者你可以清除值...
<button ng-show="object.prop" ng-click="object.prop = ''"/>
您也可以将该值设置为空
<button ng-show="object.prop" ng-click="object.prop = null"/>
这会将属性更改为值为“undefined”或“”“''的字符串。所以这不会删除任何东西。 – 2014-11-25 12:52:55
也可以将该值设置为null。' – Giwwel 2014-11-25 13:12:45
它现在仍然存在。 – 2014-11-25 13:40:07
使用以下代码从对象中删除属性
在HTML
<button ng-show="object.prop" ng-click="deleteProperty()" />
在控制器
$scope.deleteProperty = function() {
delete $scope.object.prop;
}
这不是方便的方法,因为如果你想删除对象中的其他属性,你不能用这样的方法。方法只能删除对象中的prop命名属性 – 2014-11-25 13:28:02
由于涉及控制器功能,因此不回答该问题。 – 2014-11-25 13:41:31
这里,你可以从范围的对象中删除任何属性名称的方式。这个方法需要使用Underscore.js库。
的index.html
//Underscore.js must be imported
<script src="path/to/underscore/underscore-min.js"></script>
//Replace prop with any property name
<button ng-click="removeMyProperty(object, 'prop')">Test</button>
控制器
$scope.object = {"prop": "test", "anotherProp" : 10};
$scope.removeMyProperty = function(variable, propName){
var keys = _.keys(variable);
_.each(keys, function(data){
if(data === propName){
$scope.object = _.omit(variable, propName);
}
else {
console.log("No such property name in array!");
}
});
};
这仅当您使用Underscore.js库,因此必须将其添加到您的项目类路径和进口下划线的作品。 js file in index.html
如果您不熟悉Undersc矿石,请到这里Underscore.js
如果对象是始终在一个点上,你知道是什么性质那就除了要删除你可以尝试像一个:
<button ng-show="object.prop" ng-click="object = {otherProp1: object.otherProp1, otherPropN: object.otherPropN}"/>
我认为你可以不这样做。我尝试使用“删除”运算符,如ng-click="delete object.prop"
。但事实证明,AngularJS表达式是有限的,并且在编译模板时这给我一个$ parse错误,所以你不得不在控制器中编写它,以便彻底删除它。 How do I remove a property from a JavaScript object?
你想从对象中删除特定属性:
但是,如果你想避免不惜一切手段的控制,设置属性未定义可能是一个更好的主意,在这个问题上丹读答案或所有这些? – 2014-11-25 12:11:34
@AmirAl:对象内部的任何特定属性。例如在路径“object.prop.foo [2] .bar”。 – 2014-11-25 12:17:33
@Airir:这不是重复的,因为我们正在谈论AngularJS模板代码而不是Javascript代码。 – 2014-11-25 12:18:20