Javascript 设置为特性时的角度计算表达式
例如,假设您有以下内容:Javascript 设置为特性时的角度计算表达式,javascript,angularjs,ng-class,Javascript,Angularjs,Ng Class,例如,假设您有以下内容: $scope.element = { html: '<a type="button" class="btn btn-xs btn-rounded m-r-sm"><i class="icon icon-user-unfollow"></i></a>', classExpression : " {{inactive == 'tru
$scope.element =
{
html: '<a type="button" class="btn btn-xs btn-rounded m-r-sm"><i class="icon icon-user-unfollow"></i></a>',
classExpression : " {{inactive == 'true' ? 'btn-success': 'btn-danger'}}",
}
然而,它没有对其进行评估
那么我的问题是这怎么可能(如果可能的话)
更新了my fiddle(它不工作)您可以直接使用ng类,而不是将其绑定到元素表达式?无论您的scope.inactive发生什么变化(或者您可以将inactive绑定到元素),都将重新评估它 e、 g
中间的文本
在Angular 1.1.4及更新版本中,还可以使用三元运算符
<span ng-class="element.inactive ? 'btn-success' : btn-danger">
这里假设您将非活动元素放在元素绑定上。您可以直接绑定到非活动元素(在作用域上)。您需要从
'classExpression'
中删除{{}
,如下所示-
classExpression : " inactive == 'true' ? 'btn-success': 'btn-danger'"
ng-class="{{element.classExpression}}"
也可以像下面一样使用ng类-
classExpression : " inactive == 'true' ? 'btn-success': 'btn-danger'"
ng-class="{{element.classExpression}}"
可能使您的类表达式成为函数:
$scope.element =
{
html: '<a type="button" class="btn btn-xs btn-rounded m-r-sm"><i class="icon icon-user-unfollow"></i></a>',
classExpression : function(){
return $scope.inactive == 'true' ? 'btn-success': 'btn-danger';
}
}
$scope.element=
{
html:“”,
类表达式:函数(){
返回$scope.inactive==“true”?“btn成功”:“btn危险”;
}
}
我建议重构对象,使其具有以下结构。我并不鼓励您将表达式放入字符串中
HTML
<span ng-bind-html="element.html" ng-class="element.classExpression[element.inactive]">
Text in between
</span>
中间文本
代码
$scope.element = {
html: '<a type="button" class="btn btn-xs btn-rounded m-r-sm"><i class="icon icon-user-unfollow"></i></a>',
classExpression: {
'true': 'btn-success',
'false': 'btn-danger'
},
inactive: 'true'
};
$scope.element={
html:“为什么不直接使用ng类?尝试使用ng类-class@Wake似乎无法让ng类将表达式作为objectremove{{}的属性从类表达式中移除{{},因为ng类需要一个表达式而不需要{{}。您需要将element.classExpression设置为函数,并将其插值为element.classExpression()
。用小提琴测试:似乎不起作用:(您的小提琴是错误的。在向下投票之前,请在您的位置正确检查。我单独检查了它。它工作正常。我做了向下投票,原因是插值不能与ng类
指令一起工作。@ShailendraSinghDeol没有投票否决您。但是,如果您再检查一下,我的小提琴现在应该工作正常了。)你看一下这个提琴:告诉我我做错了什么?我更新了你的JSFIDLE,使用ng类来评估你的作用域值,而不是将中的值解析为“classExpression”-这很有效(尝试将你的非活动值更改为true/false,然后查看类的变化)。您的方法有两个问题:如果要绑定,您需要一个计算作用域摘要的表达式。在这里,您尝试将您的类绑定到一个未计算的表达式。如果您只对一次性绑定(使用值)感兴趣,您可以更改代码。只需使用class=“{className}并在js代码中使用普通turnary表达式(并让className)是实际的类。我更喜欢将ng类与JSFIDLE中的表达式一起使用。这是有效的。然而,百万美元的问题是,如何使用true/false以外的其他值来实现它?@MarcRasmussen根据情况,您可以随时更改类表达式的键value@gyc我可以知道你想说什么吗YI,ng类
不适用于{{}
插值directive@gyc您是否检查了console..?是的,绑定html不起作用,因为它不安全(无ngSanitize)。您的也不绑定html。不过类表达式可以工作