我有一个带有ng-if
的模板,用于检查是否有某个数组和一个内部ng-repeat循环并重新应用相同的模板。否则,如果它是一个字符串,则只打印该值。
不幸的是,似乎ng-if
(600)的优先级低于ng-repeat
(1000),因此即使使用字符串,ng-repeat也只是一遍又一遍地调用模板(我猜是字符串的每个字母)并挂起浏览器。
有关如何使ng-if
以更高优先级运行的任何想法?或者任何其他很好的方法来实现这个目标?
指令
app.directive('cell', function ()
{
return {
restrict: "AE",
scope: {
cellData: '=cellData'
},
link: function (scope, element, attrs)
{
scope.isString = function (str)
{
return angular.isString(str);
};
scope.isArr = function (arr)
{
return !angular.isString(arr) && angular.isArray(arr);
};
},
transclude: true,
templateUrl: function (elem, attrs)
{
return "/template/cellData";
}
}
模板
span(ng-if='isArr(cellData)')
| [
span(ng-repeat='inner in cellData')
cell(cellData='inner')
span(ng-if='!$last') , 
| ]
span(ng-if='!isArr(cellData)')
span(ng-bind="isString(cellData) ? '\"'+cellData+'\"' : cellData")
编辑:我使用this question中的代码解决了问题。我不会真的得到它,但我很高兴它有效。