我有一個範圍變量$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