问题是,当我尝试有条件地应用' has-dropdown'属性,我得到以下角度转换错误:
错误:[$ compile:ctreq]指令' ngTransclude'所需的控制器' hasDropdown'无法找到! 它引用了angular.js第9563行
。我试图应用的逻辑是:
我遗失的任何东西?
<code>
<li ng-repeat="nav in app.mainNavItems"
{{app.mainNavItems.subNavs.length > 0 ? "has-dropdown" : ""}}>
</code>
答案 0 :(得分:0)
你不能这样做。您应该创建一个指令,在编译阶段应该检查是否app.mainNavItems.subNavs.length > 0
并使用$element.attr('has-dropdown')
添加属性
这样的事情:
var myModule = angular.module(...);
myModule.directive('directiveName', function($parse) {
return {
restrict: 'A',
compile: function compile(tElement, tAttrs, transclude) {
if($parse(tAttrs.directiveName)()) {
tElement.attr('has-dropdown');
}
}
};
});
模板:
<li ng-repeat="nav in app.mainNavItems" directive-name="app.mainNavItems.subNavs.length > 0">
注意:没有经过测试,只是从头顶开始..