抱歉,我的英文。 我有很多页面和表格的angularjs应用程序。 对于任何页面创建的文件,包含此页面的模型。 例如:
file userDict.js:
$rootScope.dicts.user = {
userTypes : { ... },
maxAge : ...,
minAge : ... ,
...
}
file companyDict.js:
$rootScope.dicts.company = {
companyTypes : { ... },
blabla : ...,
blabla : ... ,
...
}
files *Dict.js
....
....
在UserController
我$rootScope.dicts.user
中使用CompanyController
- $rootScope.dicts.company
。
这样做是为了便于分离大型模型。
但是如何在每个js模型文件中调用$rootScope.dicts.??? = { ... }
?
如何使用在init app期间调用的模型包装每个文件?
例如,如果我使用平面jQuery编写它,我会为每个文件
这样做file userDict.js:
$(document).ready(function(){
$rootScope.dicts.user = {
userTypes : { ... },
maxAge : ...,
minAge : ... ,
...
}
});
答案 0 :(得分:1)
如果我清楚地了解你想要什么,你有两种选择。
1)在第一个选项中你应该这样做:
angular.module('myApp', [])
.run(function($rootScope) {
$rootScope.dicts = {};
$rootScope.dicts.user = "rootScope";
})
.controller('myCtrl', function($scope, $rootScope) {
$scope.userDict = $rootScope.dicts.user;
})
.controller('myCtrl2', function($scope, $rootScope) {
$scope.userDict = $rootScope.dicts.user;
});
此示例为JSFiddle。
此代码提供从任何控制器获取$rootScope
变量的可能性。
但是你不要忘记将$rootScope
注入控制器。
2)第二个选项是使用共享服务。
myApp.factory('sharedService', function () {
var sharedService = {};
sharedService.dict = {};
sharedService.dict.user = "any value";
return sharedService;
});
myApp.controller('FirstCtrl', function ($scope, sharedService) {
$scope.user = sharedService.dict.user;
});
myApp.controller('SecondCtrl', function ($scope, sharedService) {
$scope.user = sharedService.dict.user;
});
答案 1 :(得分:0)
根据@ artyom-paranovich的回答,我认为你有2个选择。
第一个更好的解决方案是将您的数据作为服务。请注意,服务不仅适用于数据库数据,还适用于您正在执行的常规数据。 我会写一个例子,但@ artyom-paranovich做得很好。 我建议您采取这种方法。
第二个选项是将数据包装在div中,并为该div提供控制器,使其成为所有子控制器的父级。这样,您就可以在父控制器中启动数据,并且所有子控制器都可以访问它
您的HTML:
<html ng-app>
<head>
....
</head>
<body>
<div ng-contoller="ParentController">
<div ng-contoller="subController1"> </div>
<div ng-contoller="subController2"> </div>
</div>
</body>
</html>
ParentController.js
myApp.controller('ParentController', function ($scopeScope) {
$rootScope.dicts.user = {
userTypes : { ... },
maxAge : ...,
minAge : ... ,
...
};
}
});