2013-04-22 108 views
0

時候當我調用下面的代碼提取元數據:breezejs創建一個新的實體

function createMandat (initialValues) { 
     return manager.createEntity('Mandate'); 
} 

它失敗,因爲類型「任務」是未知的。我的理解是因爲當我調用這個函數時我還沒有取得任何這種類型的實體。

所以我的問題是,如果metadataStore沒有類型的知識,我如何強制往返服務器以獲取此類型的元數據?我的代碼中這樣做的最佳位置是什麼?

回答

2

您可以撥打manager.fetchMetadata然後執行您的createEntity承諾解決後調用。

manager.fetchMetadata().then(function() { 
    var newMandate = manager.createEntity("Mandate"); 
    ... 
}); 

你不需要做這個,如果你第一次執行查詢,因爲查詢執行隱含做了fetchMetadata如果它不能執行查詢之前發現的元數據。所以下面也會起作用。

manager.executeQuery(myQuery).then(function(data) { 
    results = data.results; 
    var newMandate = manager.createEntity("Mandate"); 
    ... 
}); 
+0

我沒有注意到fetchMetadata()函數...謝謝!其實有沒有辦法檢測到fetchMetadata的調用是必需的?換句話說,我可以檢測到元數據尚未加載嗎? – Sam 2013-04-22 17:24:00

+0

是的。查看[MetadataStore.hasMetadataFor](http://www.breezejs.com/sites/all/apidocs/classes/MetadataStore.html#method_hasMetadataFor) – Ward 2013-04-22 17:31:11

+0

不錯。謝謝 – Sam 2013-04-23 08:49:18

相關問題