我有一个使用Onsen UI和AngularJS构建的跨平台企业应用程序。从AngularJS的另一个文件中的控制器访问服务
该应用程序发展迅速,所以我决定将我的主要app.js文件分割成单独的文件。到目前为止,每个页面都有自己的控制器,并且所有控制器都在一个app.js文件中。
我也有一个服务我app.js,我喜欢存储的用户名等值控制器之间共享定义。我需要在应用程序周期中存储这些数据,因为在用户交互结束时,所有页面上输入的值都会发送到服务器。
我已经成功地将控制器拆分为单独的文件,但我很难将服务移动到它自己的文件中,例如sharedProperties.js。
我的 “新” app.js(略)如下所示:
// Create the module that deals with the controllers
var app = angular.module("myApp", ['onsen', 'loginController', 'registerController']);
然后,我在自己的文件中创建的每个控制器例如login.js如下:
// Get the main app.js module
var login = angular.module("loginController", []);
login.controller("LoginController", function($scope, $http)
{
// Need to get and set values from/to sharedProperties here
});
不同的.js文件,然后在的index.html声明,这一切似乎是工作确定。
我试图在其自己的文件中创建服务sharedPropertiessharedProperties.js与下面的方式相同,但这不起作用。
// Get the main app.js module
var shared = angular.module("sharedProperties", []);
shared.service("SharedProperties", function()
{
var username = "";
return {
// Get and set the userName
getUserName: function()
{
return userName;
},
setUserName: function(value)
{
userName = value;
}
}
});
我已经尝试将sharedProperties添加到我的模块,但都没有工作。我试图将它添加到下面我主要的应用程序:
// Create the module that deals with the controllers
var app = angular.module("myApp", ['onsen', 'sharedProperties', 'loginController', 'registerController']);
以及向各个控制器的功能():
var login = angular.module("loginController", []);
login.controller("LoginController", function($scope, $http, sharedProperties)
{
// Need to get and set values from/to sharedProperties here
});
但无论这些工作。如何使我的sharedProperties从新文件可用于所有我的控制器?
另外,我该如何调用我的getter和setter。当所有的控制器和服务都在我原来的app.js文件中时,我将创建控制器,将sharedProperties添加到函数(),然后调用我的getter和setter例如
app.controller("LoginController", function($scope, $http, sharedProperties)
{
sharedProperties.setUserName(someValue);
sharedProperties.getUserName();
});
或者有没有更好的方法来做到这一点?正如我所提到的,我必须将app.js文件拆分为单独的文件,因为该应用程序的规模越来越大,越来越难以管理。由于我无法控制的原因,随着时间的推移,应用会变得更大。