我有两个模块,即身份验证和主页,它们都有自己的controllers.each,其中有同名controllers.js
我必须在主页(模块主页)中显示像$scope.username这样的值,这是来自模块身份验证控制器的.How,可以吗??
发布于 2016-03-30 22:56:55
有很多种方法。我希望您在那里创建一个app.factory('dataFactory' , func(){..})
和get/set
数据,并通过应用程序在任何模块中检索您的值。
app.factory('testFactory', function(){
var _name = '';
return {
getName: function(text){
return _name;
},
setName: function(name){
_name = name;
}
}
});
工作小提琴
希望能帮上忙。
发布于 2016-03-30 22:59:03
您可以使用共享服务,这将返回您的值,控制器中的值将该服务作为依赖项注入。
例如:
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
的原型继承。
https://stackoverflow.com/questions/36326128
复制相似问题