我是 Breeze 的新手,我正在创建一个示例来学习。我面临一个问题。我创建了一个datacontext.js,在其中添加了轻量级代码以从服务中获取数据,如下所示
sample.factory('datacontext', ['breeze', 'Q', '$timeout', '$q', function (breeze, q, timeout, $q) {
configureBreeze();
var manager = new breeze.EntityManager("/breeze/ProductsBreeze");
manager.enableSaveQueuing(true);
var datacontext = {
metadataStore: manager.metadataStore,
getTodoLists: getTodoLists
};
function getTodoLists(onsuccess) {
var query = breeze.EntityQuery.from("GetAllProducts");
manager.executeQuery(query).then(onsuccess);
};
return datacontext;
//function getSucceeded(data) {
// return data.results;
//}
function configureBreeze() {
breeze.config.initializeAdapterInstance("modelLibrary", "backingStore", true);
// configure to use camelCase
breeze.NamingConvention.camelCase.setAsDefault();
}
}]);
现在在getTodoLists我正在传递一个回调onsuccess。这是我的控制器
sample.controller('todoBreeze', ['datacontext', '$scope', '$log', function (datacontext, $scope, log) {
$scope.heading = "Hello World";
$scope.Products = [];
datacontext.getTodoLists(function (data) {
$scope.Products = data.results;
log.info($scope.Products);
});
$scope.editProduct = function (pid, index) {
};
$scope.deleteProduct = function (pid, index) {
};
}]);
现在的问题是它表明在完成请求后我的数组中有两条记录(显示在控制台中)但是如果我使用 UI 则不会更新
<span>{{Products.length}}</span>
但如果我$scope.$apply()
在请求完成后打电话,那么它的工作正常。
你能告诉我我的代码中有什么错误吗?
谢谢