2013-11-20 74 views
0

我有一個列表顯示在我的頁面上的測試對象,我希望能夠使用微風向這個列表添加新的實體。微風創建實體,本地更新

,我做的第一件事是黃金從服務器使用下面的代碼當前數據:

var getTestObjects = function (testObjects) { 
     var query = EntityQuery.from('TestObject'); 

     return manager.executeQuery(query) 
     .then(querySucceeded) 
     .fail(queryFailed); 

     function querySucceeded(data) { 

      if (testObjects) { 
       testObjects(data.results); 
      } 
      datacontext.testObjects = getLocal('TestObject'); 
     }; 
    }; 

function getLocal(resource) { 
     var query = EntityQuery.from(resource); 
     return manager.executeQueryLocally(query); 
} 

接下來,我呼籲對象的創建方法:

var createTestObject = function (initialValues) { 
     var testObjectType = manager.metadataStore.getEntityType("TestObject"); 
     var newTestObject = testObjectType.createEntity(initialValues); 
     return manager.addEntity(newTestObject); 
    }; 

datacontext.createTestObject({ name: 'test' }); 
datacontext.saveChanges(); 

所有這些作品罰款和實體被添加到數據庫,但是當我呼叫datacontext.testObjects(本地可用的實體),它沒有新添加的項目。如果這個可用或者我必須再次從服務器獲取數據?

回答

0

你的datacontext不是任何Breeze類型的實例,所以我不知道你的'datacontext.textobjects'是什麼。但是...如果你想要一個entityManager中的所有本地實體,只需調用EntityManager.getEntities();所以,在你的榜樣使用:

var localEntities = manager.getEntities(); 

欲瞭解更多信息,請參閱:http://www.breezejs.com/sites/all/apidocs/classes/EntityManager.html#method_getEntities

+0

另外創建一個新的實體OP應該使用manager.createEntity( '實體名稱',{性質}); –

+0

實際上,如果testObjectType是一個EntityType,那麼調用EntityType.createEntity方法應該沒問題。 http://www.breezejs.com/sites/all/apidocs/classes/EntityType.html#method_createEntity –

+0

對不起,我應該更清楚 - datacontext是我的viewmodel,所以datacontext.textobjects調用manager.executeQueryLocally。沒有意識到getEntities存在!非常感謝! – kiwijus

相關問題