2014-12-04 38 views
1

我很難搞清楚如何使用標籤名稱(TagName)作爲過濾器來檢索一組故事。我嘗試了以下操作,但它總是返回一個空的存儲區(底部的警報返回[])。有人能幫我弄清楚我做錯了什麼嗎?Rally SDK2.0 RC3查詢

var storyStore = Ext.create('Rally.data.wsapi.Store', { 
     model: "User Story", 
     fetch: true, 
     filters: [ 
      { 
       property: 'Tags.Name', 
       operator: '=', 
       value: 'TagName' 
      } 
     ] 
    }); 

    storyStore.load({ 
     callback: function(records, operation) { 
      if(!operation.wasSuccessful()) { 
       //process records 
      } 
     } 
    }); 

    alert(JSON.stringify(storyStore.getRecords())); 

任何幫助將不勝感激!

回答

0

這是由於store.load調用的異步性質。您的商店和過濾器看起來完全正確。嘗試將您的警報放入回調中的if語句內。我敢打賭,你會發現有數據在那裏,那麼:

storyStore.load({ 
    callback: function(records, operation) { 
     if(operation.wasSuccessful()) { 
      alert(JSON.stringify(storyStore.getRecords())); 
     } 
    } 
}); 
+0

感謝您的答覆!我嘗試了你說的話,但回調中的警報從未觸發過。我玩弄了一下,注意到試圖在callback中調用storyStore對象打破了這個呼叫。然後我有這個「啊!」時刻,並意識到我應該調用在回調的函數參數中聲明的「記錄」對象。菜鳥的錯誤:)不幸的是,stringify函數不能像SDK 1.x那樣工作,所以我必須弄清楚如何用sdk 2.0來竄改對象的內容。再次感謝! – 2014-12-05 14:00:30

+0

是的,記錄是Ext.data.Model的實例,所以你會在那裏得到大量額外的數據。如果你想從每個記錄的原始信息,你可以這樣得到它:records [0] .getData() – 2014-12-05 15:58:01