相关疑难解决方法(0)

3296
推荐指数
28
解决办法
76万
查看次数

angular.service vs angular.factory

我已经看到angular.factory()angular.service()用于声明服务; 但是,我在官方文档中找不到 angular.service任何地方.

这两种方法有什么区别?应该用什么(假设他们做不同的事情)?

angularjs angular-services

1061
推荐指数
8
解决办法
33万
查看次数

AngularJS:工厂和服务?

编辑2016年1月:由于这仍然备受关注.自从问这个我已经完成了一些AngularJS项目,并且对于那些我最常用的项目factory,构建了一个对象并在最后返回了对象.我下面的语句是仍然如此,但是.

编辑:我想,我终于明白了两者之间的主要区别,和我有一个代码示例演示.我也在想这个问题所提出的重复不同.重复的说,服务不是实例化,但如果你将其设置为我下面演示,它实际上是.服务可以被设置为是完全一样的工厂.我还将提供显示工厂故障服务的代码,这似乎没有其他答案.

如果我成立VaderService像这样(即服务):

var module = angular.module('MyApp.services', []);

module.service('VaderService', function() {
    this.speak = function (name) {
        return 'Join the dark side ' + name;
    }
});
Run Code Online (Sandbox Code Playgroud)

然后在我的控制,我可以这样做:

module.controller('StarWarsController', function($scope, VaderService) {
    $scope.luke = VaderService.speak('luke');   
});
Run Code Online (Sandbox Code Playgroud)

通过服务,注入到控制器的VaderService被实例化,所以我可以调用VaderService.speak,但是,如果我将VaderService更改为module.factory,控制器中的代码将不再起作用,这是主要区别.随着工厂,VaderService注入到控制器实例化,这就是为什么你需要设立一家工厂(见我的问题为例)返回一个对象.

但是,您可以设置在完全相同的方式服务,你可以建立一个工厂(IE有它返回一个对象)和服务的行为完全一样作为一个工厂

鉴于此信息,我认为没有理由使用工厂超过服务,服务可以做任何工厂可以做的更多.

下面原来的问题.


我知道这已经被问的时候加载,但我实在看不出工厂和服务之间的功能差异.我读过这个教程:http://blogs.clevertech.biz/startupblog/angularjs-factory-service-provider

它似乎给一个合理的很好的解释,但是,我设立了我的应用程序如下:

的index.html

<!DOCTYPE html>
<html>
    <head>
    <title>My App</title>
    <script src="lib/angular/angular.js"></script>
    <script type="text/javascript" src="js/controllers.js"></script>
    <script type="text/javascript" src="js/VaderService.js"></script>
    <script type="text/javascript" src="js/app.js"></script>
    </head>

    <body ng-app="MyApp"> 
        <table ng-controller="StarWarsController">
            <tbody>
            <tr><td>{{luke}}</td></tr>
            </tbody>
        </table> …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-service angularjs-factory

213
推荐指数
3
解决办法
24万
查看次数

创建通用控制器功能

如何创建某种可以从我的所有控制器访问的utils包?

我的主模块中有这个路由代码:

'use strict';

angular.module('lpConnect', []).
    config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/home', {template: 'views/home.html', controller: HomeCtrl}).
        when('/admin', {template: 'views/admin.html', controller: AdminCtrl}).
        when('/connect', {template: 'views/fb_connect.html', controller: MainAppCtrl}).
        otherwise({redirectTo: '/connect'});
}]);
Run Code Online (Sandbox Code Playgroud)

我想要一个可以共同的功能HomeCtrl,AdminCtrlMainAppCtrl.

我应该如何在AngularJS中做到这一点?

javascript web angularjs angularjs-service

40
推荐指数
2
解决办法
4万
查看次数

AngularJS和WebSockets超越

我刚看了这篇文章,我明白了它的不同之处.但仍然在我脑海里,我有问题.可以/我应该在同一个应用程序/网站中使用它吗?假设我希望AngularJs获取内容并更新我的页面,连接到REST api以及所有最重要的东西.但最重要的是,我还想要实时聊天,或者在收到更新或消息时触发其他客户端上的事件.

Angular支持吗?或者我需要使用像Socket.io这样的东西来触发这些事件?使用两者都有意义吗?如果有人可以帮助我或指导我一些好的阅读,如果有目的的话可以同时使用它们.

希望我足够清楚.感谢您的任何帮助.

javascript websocket socket.io angularjs

22
推荐指数
2
解决办法
3万
查看次数

AngularJS:服务变量更改未应用

我目前有一个问题,当我在一个服务中调用一个函数来改变它自己的内部变量时,它似乎不会停留,除非我从控制器更改它.当我在更改后立即将变量输出到控制台时,它会显示正确的值.但是,当我调用控制器中的一个函数将对象打印到控制台时,它会显示原始值.

有问题的变量Im是"isSignedIn",它总是显示为false(在登录控制器中使用$ scope.verify方法确认),即使在"console.log('Signin:'+ isSignedIn);"行之后也是如此.显示真实.

提前感谢任何指导!

服务Skype

angular.module('Skype', ['ng'])
    .service('skypeClient', function () {
        //Service Properties
        var client = new Skype.Web.Model.Application;
        this.errors = [];
        this.errorCount = -1;
        var isSignedIn = false;
        var state = 'SignedOut';

        var init = function () { 
            client.signInManager.state.when('SignedIn', function () {
                isSignedIn = true;
                console.log('Signin:' + isSignedIn); // This outputs the correct value
            });
            property = client.signInManager.state;
            property.changed(function (status) { 
            state = status;
           console.log("New State"+status) });
           }

        //Signin Function
        var signIn = function (username,password) {
            client.signInManager.signIn({
                username: username, …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-service

1
推荐指数
1
解决办法
2746
查看次数