Angularjs ng类一次绑定
我想知道是否有可能有一个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
<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”的表达式则在每个摘要周期中计算一次。类名选择得不好对不起。。。