$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 = ''"/>
また、値をnullに設定することもできます
<button ng-show="object.prop" ng-click="object.prop = null"/>
あなたにはそれができないと思います。のような「削除」演算子を使用してみng-click="delete object.prop"
ました。しかし、AngularJS 式が制限されていることがわかりました。これにより、テンプレートのコンパイル中に $parse エラーが発生するため、残念ながらそれを完全に削除するには、コントローラーにそれを記述する必要があります。
ただし、コントローラーをどうしても避けたい場合は、プロパティを未定義に設定することをお勧めします。この質問のダンによる回答を読んでください: How do I remove a property from a JavaScript object?
スコープのオブジェクトからプロパティ名を削除する方法は次のとおりです。この方法では、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 ライブラリを使用する場合にのみ機能するため、プロジェクトのクラスパスに追加し、index.html に underscore.js ファイルをインポートする必要があります。
Underscore に慣れていない場合は、こちらのUnderscore.jsを参照してください。