Javascript 如何在工厂服务中设置模型以用于控制器?

Javascript 如何在工厂服务中设置模型以用于控制器?,javascript,angularjs,Javascript,Angularjs,在工厂服务中设置模型(scopevars)是否可能(也是一个好主意) 例如,我有一个工厂,它在下面定义了一个模型,我现在如何在控制器中初始化它 (function () { 'use strict'; angular.module('services.auth', []) .factory('AuthorisationService', function ($rootScope, $http) { // Public variables

在工厂服务中设置模型(scopevars)是否可能(也是一个好主意)

例如,我有一个工厂,它在下面定义了一个模型,我现在如何在控制器中初始化它

(function () {
    'use strict';
    angular.module('services.auth', [])

        .factory('AuthorisationService', function ($rootScope, $http) {

            // Public variables
            var authService = {
                user: {
                    email: '',
                    password: ''
                }

            };

            return authService;

        });


})();
控制器:

.controller('LoginCtrl', ['$scope', 'AuthorisationService', function ($scope, AuthorisationService) {

     AuthorisationService();



            };


        }]);

您可以将控制器的作用域作为参数传递给工厂,然后在该作用域上设置值。 如果这是一个好主意,问题的答案是:而不是。
这样做通常不是最好的做法。最好只在控制器中更改您作用域的变量,如果您的服务中需要变量,那么这些变量应该在那里设置,并通过getter/setter从控制器中使用。

当然可以这样做,我喜欢使用服务并保持控制器干净

看看这个演示:

var-app=angular.module('app',[]);
应用控制器('MainCtrl',功能($scope,authorizationservice){
$scope.authService=authorizationservice.authService;
});
app.factory('authorizationservice',函数($rootScope,$http){
var授权服务={};
//公共变量
var\u authService={
用户:{
电邮:'test@gmail.com',
密码:“test123”
}
};
AuthorizationService.authService=\u authService;
退货授权服务;
});

电子邮件:{{authService.user.Email}

密码:{{authService.user.Password}


如果你想在你的控制器之间共享数据,你可以使用tat。否则,如果任何其他控制器不需要数据,最好在控制器本身内部声明变量(公共/私人)。

为什么不在工厂中公开一个方法,返回一个对象并将结果分配给控制器?或者使用一个服务代替。我正在使用一个工厂,因为我后来的理解是,这对于整个登录系统来说会更好。就方法而言,您的意思是在工厂内拥有一个功能,然后将其分配给控制器中的作用域?是的。公开方法(如API),然后在控制器中执行类似于
$scope.value=factory.function()
的操作。我不想仅在初始化控制器的值时更改作用域中的任何内容。这很好,在本例中,如果不提出一个全新的问题,
服务工厂
服务
更有意义吗?我将添加一个登录功能,再加上一个is_authfunction@Spaceships有关
angular.service
angular.factory
的更多信息,请查看。当然你可以在这个工厂里做你想要的任何功能,但我喜欢做的是保持它的整洁,当我准备为另一个主题创建新功能时创建一个新工厂。这样我就可以公开链接到许多工厂的服务,并在控制器中像API一样使用服务?@太空船我有许多工厂,在控制器中像API一样使用它们是的。就像我在演示中做的那样。我在工厂制作了一个对象,并插入了每个函数、对象、数组等。。。在主对象中,这样我就可以随时随地使用它。