角度运行ng-if优先级高于ng-repeat

时间:2014-11-01 05:25:08

标签: angularjs

我有一个带有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') ,&nbsp
    | ]
span(ng-if='!isArr(cellData)')
    span(ng-bind="isString(cellData) ? '\"'+cellData+'\"' : cellData")

编辑:我使用this question中的代码解决了问题。我不会真的得到它,但我很高兴它有效。

0 个答案:

没有答案