Angularjs ng类一次绑定

Angularjs ng类一次绑定,angularjs,class,Angularjs,Class,我想知道是否有可能有一个ng类,它的类是一次性绑定的,并且每个摘要周期都会对其进行评估 <div ng-class="{'one_time_binded_class': isMonkey(), 'not_one_time_binded_class': isUnicorn()}"></div> 有办法吗?我能想到的一个办法是(如果我按照你想说的去做的话)如下 .blue{ color: blue; } .underline{ text-decoration

我想知道是否有可能有一个ng类,它的类是一次性绑定的,并且每个摘要周期都会对其进行评估

<div ng-class="{'one_time_binded_class': isMonkey(), 'not_one_time_binded_class': isUnicorn()}"></div>

有办法吗?

我能想到的一个办法是(如果我按照你想说的去做的话)如下

.blue{
    color: blue;
}
.underline{
    text-decoration: underline;
}
.lineThrough{
    text-decoration: line-through;
}

<div ng-app ng-controller="myCtrl">
    <p ng-class="{'blue': isMonkey()}" class="{{isUnicorn() ? dynamicClass: ''}}">My Text</p>
    <button ng-click="monkey = !monkey">Monkey</button>
    <button ng-click="unicorn = !unicorn">Unicorn</button>
    <button ng-click="toggleClass()">Toggle</button>
</div>

function myCtrl($scope) {
    $scope.dynamicClass = "underline";
    $scope.monkey = true;
    $scope.unicorn = true;
    $scope.isMonkey = function () {
        return $scope.monkey;
    }
    $scope.isUnicorn = function () {
        return $scope.unicorn;
    }
    $scope.toggleClass = function(){
        $scope.dynamicClass = $scope.dynamicClass === "underline"? "lineThrough": "underline";
    }
}
.blue{
颜色:蓝色;
}
.下划线{
文字装饰:下划线;
}
.lineThrough{
文字装饰:线条贯通;
}

我的文本

猴子 独角兽 切换 函数myCtrl($scope){ $scope.dynamicClass=“underline”; $scope.monkey=true; $scope.unicorn=true; $scope.isMonkey=函数(){ 返回$scope.monkey; } $scope.isUnicorn=函数(){ 返回$scope.unicorn; } $scope.toggleClass=函数(){ $scope.dynamicClass=$scope.dynamicClass===“下划线”?“线条贯穿”:“下划线”; } }

方法1:

class="some-class {{::expression ? 'my-class' : ''}}"
ng-class="::{'my-class': expression}"
方法2:

class="some-class {{::expression ? 'my-class' : ''}}"
ng-class="::{'my-class': expression}"

一次性绑定的一个重要部分是,在“表达式”未定义之前,不能对其进行绑定。到目前为止最好的答案是@ifadey,当“expression”未定义时,他的方法1的计算结果为空字符串,而get是绑定的。这与预期的特征行为相反。在这种后期绑定场景中,方法2同样没有帮助

正确执行此操作,直接回答op的问题:

class="some-class {{::expression ? 'one-time-class' : undefined}}"
ng-class="{ 'my-dynamic-class' : expression2 }"
或者是技术上更正确但丑陋的:

class="some-class {{::expression ? 'one-time-class' : (expression===undefined ? undefined : '')}}"

谢谢你的回答,但我的问题是关于一次的。“my_static_class”的表达式计算一次,而“my_dynamic_class”的表达式则在每个摘要周期中计算一次。类名选择得不好对不起。。。