我正在使用 Angular 开发网上商店,并尝试使用服务清理代码。我希望该服务从 REST api 加载项目列表,并跨各种控制器对这些项目执行功能。当我尝试使用从 REST 调用返回的数据填充 ng-repeat 语句时,就会出现我的问题 - 列表永远不会填充获取的项目。以前我使用 $scope 和 $apply 来确保在返回数据时更新我的 DOM - 我可以在服务中执行类似的操作吗?
服务
'use strict';
var serv = angular.module('serv', []);
serv.factory('shopService', function() {
//create the shop client as service varible
var client = window.ShopifyBuy.buildClient({
domain: 'xxxxxxx.myshopify.com',
storefrontAccessToken: 'xxxxxxxxxxxxxxxxx'
});
var products = [];
client.product.fetchAll().then((products_complete) => {
//do things and get the products ready
products.push(item);
});
return {
products: products
}
});
控制器
'use strict';
var serviceApp = angular.module('serviceApp', ['serv']);
serviceApp.controller('CartController', ['shopService', function CartController(shopService) {
//create a reference to the service variable
this.products = shopService.products;
}]);
和 HTML
<body>
<div ng-app="serviceApp" ng-controller="CartController as cart">
<ul>
<li ng-repeat="product in cart.products">
<div> {{ product.title }} </div>
</li>
</ul>
</div>
</body>
任何帮助表示赞赏。