2016-03-04 31 views
1

是否有人知道如何在appcelerator中整理一組數據?我嘗試了一些示例代碼,它運行良好。但是,在我的情況下實施它不起作用。在我的情況下,我將數據添加到數據庫中,並通過調用數據庫對數據進行分類。日期格式是這樣的 「YYYY-MM-DD HH:MM:SS」如何在編輯器中按日期排序一組數據

這裏是我的代碼:

var DummyData = []; 
var isDatess=true; 

var sampleData= Alloy.createCollection('samplePage'); 
sampleData .fetch({query:"SELECT * FROM dummyValfromDB"}); 
if(sampleData.length > 0){ 
     isDatess=true; 
     for (var i = 0; i < sampleData.length;i++) { 
     var did = sampleData.at(i).get('did'); 
     var dummyName = sampleData.at(i).get('dummyName'); 
     var dummydate= sampleData.at(i).get('dummydate'); 
     var dummyuid= sampleData.at(i).get('dummyuid'); 

     sampleData.push({ 
      "label_dummy_name": { text: dummyName}, 
      "label_dummydate":{text: dummydate}, 
      "label_dummyuid":{text: dummyuid},  
     }); 
    } 
     DummyData.sort(sorting); 
} 

    function sorting(a,b){ 
    var dateA = new Date(a.label_dummydate).getTime(); 
    var dateB = new Date(b.label_dummydate).getTime(); 
    var result=""; 
    if(isDatess) 
     result=dateA > dateB ? 1 : -1; 
    else 
     result=dateA < dateB ? 1 : -1; 
    return result; 

    }; 


$.dummyList.sections[0].setItems(DummyData); 
+1

假設您傳遞給* Date *的格式可以正確解析(並且很有可能它不會在至少某些瀏覽器中),那麼sort函數可以大大簡化爲如下所示:'返回新的日期(a.label_dummydate) - 新的日期(b.label_dummydate)'。 – RobG

回答

1

我得到了答案。 NaN在執行時顯示,並通過添加文本進行解析。找到我下面得到的答案。

function sorting(a,b) { 
      var valA = a.label_dummydate.text; 
      var valB = b.label_dummydate.text; 

      var dateA = new Date(val_a).getTime(); 
      var dateB = new Date(val_b).getTime(); 
      var result=""; 

      if(isDatess) 
       result=dateA > dateB ? 1 : -1; 
      else 
       result=dateA < dateB ? 1 : -1; 
      return result; 
     }; 

感謝您的幫助。我認爲這可能會幫助你的人......乾杯!

0

這只是一瞥,但它看起來像你正在使用a.label_dummydate在你的排序函數的日期構造函數中,當你應該使用a.label_dummydate.text。你使用的是一個對象字面值,而不是你想要的字符串內容,所以它使一個無效的日期不能正確比較

0

合金有moment.js內置,在我看來它比Date更易於使用和閱讀代碼,它還提供了很多工具來比較兩個日期;如果你對國際化感興趣,也很容易做到。

1

對於您的用例,您可以在SQL查詢中使用ORDER BY按日期或日期時間對數據進行升序或降序排序嗎?

+0

嗨...是的,我做到了這一點,它適用於我。但在某些情況下不能從別人處獲得。所以我只是把代碼本身放在一邊。找到我發佈的代碼。這對我來說可以 – Dev786