Javascript 使用角度视图中的工厂刷新视图
我想在我的angular应用程序中更新两个视图,它们都有自己的控制器 我有一个工厂:Javascript 使用角度视图中的工厂刷新视图,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我想在我的angular应用程序中更新两个视图,它们都有自己的控制器 我有一个工厂: angular.module('starter') .factory('userFactory', function(DSCacheFactory){ var user = DSCacheFactory.get("userData").get("user"); if(user === undefined){ return false }else{
angular.module('starter')
.factory('userFactory', function(DSCacheFactory){
var user = DSCacheFactory.get("userData").get("user");
if(user === undefined){
return false
}else{
var name, email
return {
name:user.name,
email: user.userName
}
}
});
因此,当用户未登录时,该值为false。但当用户登录时,将显示其用户名和名称。我遇到的问题是,当我刷新页面时,视图会被更新,并且我可以看到用户已登录,但是我不想刷新页面,我希望不同控制器上的两个视图立即更新
往正确的方向推吗?如果你需要我详细说明什么,请尽管问
谢谢这可以通过$watch实现。也许你应该重新组织你的代码,这样你就不需要监视了。这使得
app.controller('myCtrl', ['userFactory', function(userFactory) {
$scope.$watch(
function( $scope ) { return userFactory },
function( user) {
if (!user) console.log('login please');
else console.log(user);
}
);
}]))
希望有帮助 另一个想法。您可以在多个控制器上使用“appmodel”服务共享数据
控制器:
angular.module('myApp.controllers', [])
.controller('ACtrl', ['$scope', 'appmodel', 'loginservice', function($scope, appmodel, loginservice) {
$scope.User = appmodel.User;
$scope.login = loginservice.login;
}])
.controller('BCtrl', ['$scope', 'appmodel', function($scope, appmodel) {
$scope.User = appmodel.User;
}])
应用模型:
myApp.service('appmodel', [function(){
var self = this;
self.User = {};
self.User.name = '';
}]);
登录操作:
myApp.service('loginservice', ['appmodel', 'userFactory', function(appmodel, userFactory){
var self = this;
self.login = function() {
var user = userFactory;
if (user !== false)
{
appmodel.User.name = user.name;
appmodel.User.email = user.email;
}
}
}]);
更多详细信息:用户登录后,您需要更新该用户。能否显示您的登录代码和
DSCacheFactory
?