Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用角度视图中的工厂刷新视图_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 使用角度视图中的工厂刷新视图

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应用程序中更新两个视图,它们都有自己的控制器

我有一个工厂:

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