式に応じてdivを表示したいのですが、式が文字列形式の変数に格納されています。 ng-show
/ng-hide
の式変数。以下のような :ng-show条件(変数の文字列形式で保存されています)が角度jを評価していません
$scope.condition = {"SHOW":'(model1 === 'test1')'}
<div ng-show="condition['SHOW]"></div> something like this.
式に応じてdivを表示したいのですが、式が文字列形式の変数に格納されています。 ng-show
/ng-hide
の式変数。以下のような :ng-show条件(変数の文字列形式で保存されています)が角度jを評価していません
$scope.condition = {"SHOW":'(model1 === 'test1')'}
<div ng-show="condition['SHOW]"></div> something like this.
は、ちょうど.. を追加したい... the expression is stored in a variable in string form, is it possible to do evaluate an expression variable ..
簡単な答えはNOあなたがangularjs
式の文字列を評価することはできませんではありません変数がありますが、唯一の有効な式を評価することができます。(JSによって、または角度可変のいずれかによって)
を区別するために、コードの下にこれを参照してください。
var myApp = angular.module('myApp', []);
//myApp.directive('myDirective', function() {});
myApp.controller('MyCtrl', function MyCtrl($scope) {
$scope.condition = {
SHOW1: "'test' == 'NOTEST'",
SHOW2: 'test' == 'test'
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
<div ng-show="condition.SHOW1">
1.Not working, as it is simple string("'test' == 'NOTEST'").
</div>
<div ng-show="condition.SHOW2">
2.Working, valid boolean Angular variable
</div>
<div ng-show="'test'=='test'">
3.Working, valid boolean simple JS expression
</div>
</div>
:
は
CONTROLLER
0と同じである$scope.test = 'test1';
$scope.condition = { show : ($scope.test === 'test1')};
VIEW
<div ng-show="condition.show">something like this.</div>
をお試しください
<div ng-show="condition['show']">something like this.</div>
TIP
代わりのng-show
/ng-hide
を使用して、ng-if
を使用するようにしてください。 ng-if
は、このディレクティブ内のバインドされた変数の変更を監視せず、パフォーマンスを向上させることができます。それは、すでに他のポストで答えていますけれども、あなたの質問ではあなたが言ったので
<div ng-if="condition['show']">something like this.</div>
またはビュー - 'NG-ショー= "条件[ 'SHOW] .model1 === 'TEST1'"' –
@AlonEitan - 正確に - しかし、私ビューレベルでの追加の論理の本当のファンではありません。私はコントローラー側で論理を維持しようとする - 明快さを保つために。私は個人的だと思います。 :) –
OK、あなたは私のupvoteを持っています;) –
文字列表現を明確にするために答えをアップしました。ありがとう:) –