我有两个模块,即Authentication和Home,它们有自己的控制器。它们中有相同的名称controller.js
我必须在主页(模块Home)中显示类似于$ scope.username的值,它来自模块认证的控制器。如何可能?
答案 0 :(得分:2)
有很多方法。我希望您在那里制作app.factory('dataFactory' , func(){..})
和get/set
数据,并在整个应用中检索您在任何模块中的价值。
app.factory('testFactory', function(){
var _name = '';
return {
getName: function(text){
return _name;
},
setName: function(name){
_name = name;
}
}
});
工作Fiddle
希望它有所帮助。
答案 1 :(得分:0)
您可以使用共享服务,它将返回您的值,并且您的控制器将该服务作为依赖项注入。
e.g。
angular.module( 'yourApp' )
.value("username", "Jon")
.controller("index", ["$scope", "username", function($scope, username) {
$scope.username = username;
}]);
或使用工厂配方:
angular.module( 'yourApp' )
.factory("username", function(){
var value = 'John';
return {
get: function(){
return value;
},
set: function(newName){
value = newName;
}
}
})
.controller("index", ["$scope", "username", function($scope, username) {
$scope.username = username.get();
}]);
如果此值是动态的,您可以将值保存为对象并返回参考,那么您不需要使用手动创建的手表来查看值是否已更改:
angular.module( 'yourApp' )
.factory("username", function(){
var username = {
value: 'John'
};
return {
get: function(){
return username;
},
set: function(newName){
username.value = newName;
}
}
})
.controller("index", ["$scope", "username", function($scope, username) {
$scope.usernameObj = username.get();
}]);
并在视野中:
{{usernameObj.value}}
你也可以通过在父范围内保存值来使用$scope
的原型继承来做到这一点。