簡體   English   中英

在AngularJS的ng-if中表達

[英]Expression in ng-if of AngularJS

考慮以下片段

ng-如果不起作用

<div class="row">
    <div class="col-md-8">
        <ul>
            <li ng-repeat="bigL in bigLs">
                <span ng-if="isObj(bigL)">{{bigL.note}}</span>
                <ul ng-if="bigL instanceof Array">
                    <li ng-repeat="bigLl in bigL">
                        {{bigLl}}
                    </li>
                </ul>
            </li>
        </ul>
    </div>
</div>

ng-如果工作

<div class="row">
    <div class="col-md-8">
        <ul>
            <li ng-repeat="bigL in bigLs">
                <span ng-if="isObj(bigL)">{{bigL.note}}</span>
                <ul ng-if="isArr(bigL)">
                    <li ng-repeat="bigLl in bigL">
                        {{bigLl}}
                    </li>
                </ul>
            </li>
        </ul>
    </div>
</div>

控制者

$scope.isArr = function(bigL){
        return bigL instanceof Array;
};

我使用ng-if來確定是否需要創建嵌套的ul(通過確定數組bigLs內的不同數據類型),我遇到了ng-if無法評估Array的bigL instanceof的情況 ,然后將該代碼段移至函數內,在相同的上下文中,ng-of可以正常工作,但是仍然無法理解為什么需要將表達式包裝在函數內部而不是直接在ng-if內部運行。

感謝您的澄清,謝謝!

我不確定這個問題,但是在您的代碼中有幾處難聞的地方:

永遠不要使用“ instanceof Array”。 它不會以角度表達起作用。

而是使用angular.isArray()。 通過在您的范圍內添加方法,這僅在javascript中有效。

因此,您需要執行以下操作:

控制器:

...
$scope.hasChildren = function(bigL1) {
  return angular.isArray(bigL1);
} 

模板:

 ...
 <ul ng-if="hasChildren(bigL)">
 ...

另外,對該代碼進行單元測試變得更加容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM