我有一个ng-class似乎没有在初始加载时添加类。看起来该函数运行正常,并输出正确的布尔值,但该类只是没有添加。但是,如果我切换值,则会按预期更新。
<ul class="gb-talents-tiers">
<li class="clearfix" ng-repeat="tier in guide.tiers()">
<span>{{tier}}</span>
<ul class="gb-talents-icons clearfix">
<li ng-repeat="talent in guide.talentsByTier(hero.hero, tier) | orderBy: talent.orderNum">
<a href="#" class="talents-icon {{hero.hero.className}} {{talent.className}}" ng-class="{ 'tier-selected': guide.hasAnyTalent(hero, talent), 'active': guide.hasTalent(hero, talent) }" ng-click="guide.toggleTalent(hero, talent)" hots-talent>{{talent.name}}</a>
</li>
</ul>
</li>
</ul>
问题在于:
ng-class="{ 'tier-selected': guide.hasAnyTalent(hero, talent), 'active': guide.hasTalent(hero, talent) }"
除了在初始负载上添加的类外,所有内容都按预期输出。当我输出&#34; {{guide.hasTalent(hero,talent)}}&#34;时,它会按预期返回true或false。如果您需要更多信息,我会尽力而为。
编辑:添加hasTalent功能
gb.hasTalent = function (hero, talent) {
if (hero.talents['tier'+talent.tier] === talent._id) {
return true;
}
return false;
};
添加了一个看似完美的plunkr。 FML。 http://plnkr.co/edit/B8bUm5wD5FtkyFkOJfWr?p=preview
答案 0 :(得分:0)
ng-repeat的每次迭代都会创建一个新的范围。
因此,如果要从父作用域访问属性,则需要执行以下操作:
ng-class="{ 'tier-selected': $parent.guide.hasAnyTalent(hero, talent),