尝试根据函数结果设置 ng-class
Trying to set ng-class according to function result
我有一个函数,当我发出某种词语时 returns 为真。此函数是正确的并经过验证,但是我无法将其结果显示在视图中:
<li ng-class="{'active': ctrl.currentPage('parceiro')}"><a class="waves-effect waves-orange" href="parceiro.php"><i class="flaticon-college"></i>Seu Perfil</a></li>
对于ctrl.currentPage('parceiro')
,结果是true
(用console.log测试)。有什么想法吗?
编辑:DOM 显示为 <li ng-class="{'active': ctrl.currentPage('parceiro')}"><a class="waves-effect waves-orange" href="parceiro.php"><i class="flaticon-college"></i>Seu Perfil</a></li>
,{'active': ctrl.currentPage('parceiro')}
不是 "compiled"?
此外,我正在测试的功能是
currentPage = function(name){
return true;
}
问题是我忘记在控制器中将 this
设置为 ctrl
。
看起来像你 ,但想提供一些代码示例上下文以供将来参考。
下面的代码片段是一个使用您的代码作为基础的工作示例。
function SimpleCtrl(){}
SimpleCtrl.prototype = {
currentPage:'',
setCurrentPage:function(val){
console.log({name:'currentPage', val:val, result:this.currentPage === val});
return this.currentPage === val;
}
};
angular.module('so-app', [])
.controller('simpleCtrl', SimpleCtrl);
.active {
border:5px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<div ng-app="so-app" ng-controller="simpleCtrl as ctrl">
<br />
<button type="button" ng-click="ctrl.currentPage = 'parceiro'">Set Page = 'parceiro'</button>
<button type="button" ng-click="ctrl.currentPage = ''">Clear</button>
<br />
<h3>{{ctrl.currentPage}}</h3>
<br />
<br />
<li ng-class="{'active': ctrl.setCurrentPage('parceiro')}"><a class="waves-effect waves-orange" href="parceiro.php"><i class="flaticon-college"></i>Seu Perfil</a></li>
</div>
你的代码是完美的,但是 ng-class 语句是错误的。所以使用正确的方法
`<li ng-class="({active: ctrl.currentPage('parceiro')})"><a class="waves-effect waves-orange" href="parceiro.php"><i class="flaticon-college"></i>Seu Perfil</a></li>`
我有一个函数,当我发出某种词语时 returns 为真。此函数是正确的并经过验证,但是我无法将其结果显示在视图中:
<li ng-class="{'active': ctrl.currentPage('parceiro')}"><a class="waves-effect waves-orange" href="parceiro.php"><i class="flaticon-college"></i>Seu Perfil</a></li>
对于ctrl.currentPage('parceiro')
,结果是true
(用console.log测试)。有什么想法吗?
编辑:DOM 显示为 <li ng-class="{'active': ctrl.currentPage('parceiro')}"><a class="waves-effect waves-orange" href="parceiro.php"><i class="flaticon-college"></i>Seu Perfil</a></li>
,{'active': ctrl.currentPage('parceiro')}
不是 "compiled"?
此外,我正在测试的功能是
currentPage = function(name){
return true;
}
问题是我忘记在控制器中将 this
设置为 ctrl
。
看起来像你
下面的代码片段是一个使用您的代码作为基础的工作示例。
function SimpleCtrl(){}
SimpleCtrl.prototype = {
currentPage:'',
setCurrentPage:function(val){
console.log({name:'currentPage', val:val, result:this.currentPage === val});
return this.currentPage === val;
}
};
angular.module('so-app', [])
.controller('simpleCtrl', SimpleCtrl);
.active {
border:5px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<div ng-app="so-app" ng-controller="simpleCtrl as ctrl">
<br />
<button type="button" ng-click="ctrl.currentPage = 'parceiro'">Set Page = 'parceiro'</button>
<button type="button" ng-click="ctrl.currentPage = ''">Clear</button>
<br />
<h3>{{ctrl.currentPage}}</h3>
<br />
<br />
<li ng-class="{'active': ctrl.setCurrentPage('parceiro')}"><a class="waves-effect waves-orange" href="parceiro.php"><i class="flaticon-college"></i>Seu Perfil</a></li>
</div>
你的代码是完美的,但是 ng-class 语句是错误的。所以使用正确的方法
`<li ng-class="({active: ctrl.currentPage('parceiro')})"><a class="waves-effect waves-orange" href="parceiro.php"><i class="flaticon-college"></i>Seu Perfil</a></li>`