我正在构建一个电子商务网站(基于 shopify),并且我正在使用多个小型 angularjs 应用程序来处理诸如快速购物车、愿望清单、过滤产品和其他一些较小的项目之类的事情。我最初使用了一个大型应用程序(具有路由和所有功能),但是当我没有完整的 REST API 时,它有点限制。
我想在 Angular 应用程序之间共享一些服务(购物车服务,因此我可以有一个快速添加按钮,该按钮将反映在迷你购物车等中),但我不确定最好的方式(如果有办法)去解决这个问题。仅与服务共享模块不会在应用程序之间保持相同的状态。
我试过了,但我似乎没有更新两个应用程序之间的状态。以下是我尝试使用的 javascript。它也在 jsfiddle 上,附带 html:http: //jsfiddle.net/k9KM7/1/
angular.module('test-service', [])
.service('TestService', function($window){
var text = 'Initial state';
if (!!$window.sharedService){
return $window.sharedService;
}
$window.sharedService = {
change: function(newText){
text = newText;
},
get: function(){
return text;
}
}
return $window.sharedService;
});
angular.module('app1', ['test-service'])
.controller('App1Ctrl', function($scope, TestService){
$scope.text = function(){ return TestService.get() }
$scope.change = function(){ TestService.change('app 1 activated') }
});
angular.module('app2', ['test-service'])
.controller('App2Ctrl', function($scope, TestService){
$scope.text = function(){ return TestService.get() }
$scope.change = function(){ TestService.change('app 2 activated') }
});
var app1El = document.getElementById('app1');
var app2El = document.getElementById('app2');
angular.bootstrap(app1El, ['app1', 'test-service']);
angular.bootstrap(app2El, ['app2', 'test-service']);
任何帮助,将不胜感激