Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置为特性时的角度计算表达式_Javascript_Angularjs_Ng Class - Fatal编程技术网

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。不过类表达式可以工作