簡體   English   中英

在angularjs中的兩個變量的基礎上排序/排序升序

[英]Sorting / orderby ascending on basis of two variable in angularjs

我有一個條件,我需要根據兩個值以升序對列表進行排序。

首先根據SCHEDSTART,如果可用,則為空白,然后使用WONUM

帶有SCHEDSTART的div應該在頂部。

我寫的代碼不起作用:

代碼1:HTML:

<ion-item ng-repeat="wo in vm.workOrders | orderBy : dynamicOrder>

控制器:

function dynamicOrder(wo){
            if(wo.json.SCHEDSTART){
                return wo.json.SCHEDSTART;
            }else{
                return wo.json.WONUM;
            }
        }

代碼2:

<ion-item ng-repeat="wo in vm.workOrders | orderBy : ['json.SCHEDSTART','json.WONUM']>

如果這是最好的方法,請確定,但我的建議是在兩個ion-item標簽上分別創建一個ng-if 例如

<ion-item ng-if="SCHEDSTART" ng-repeat="wo in vm.workOrders | orderBy : SCHEDSTART>

<ion-item ng-if="!SCHEDSTART" ng-repeat="wo in vm.workOrders | orderBy : WONUM>

ng-if對true / false和true / falsy進行操作,因此如果SCHEDSTART為truthy ,或者換句話說具有內容,那么我顯示的第一個html標簽將填充您的DOM。

如果SCHEDSTART為falsy ,或換句話說為0 (zero)"" (empty string)nullundefinedNaN (Not a number)則第一個標簽在DOM中將如下所示

<!--ng-if="SCHEDSTART"-->

現在,如果您要更加確定該功能是否有效,可以創建一個專門用於指示SCHEDSTART是否正確的變量。 使用您提供的代碼,我將這樣更改

var schedStartHasData;

function dynamicOrder(wo){
        if(wo.json.SCHEDSTART){
            schedStartHasData = true;
        }else{
            schedStartHasData = false;
        }
    }

您視圖中的兩個標簽看起來像這樣

<ion-item ng-if="schedStartHasData " ng-repeat="wo in vm.workOrders | orderBy : SCHEDSTART>

<ion-item ng-if="!schedStartHasData" ng-repeat="wo in vm.workOrders | orderBy : WONUM>

暫無
暫無

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

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