标签: angularjs-service

mean.js $资源调用快速服务器RESTful API

我来自一个完全没有网络开发的背景,但是看到了mean.js正在崛起的牵引力,我真的很想试一试.

我已经在线学习了教程,所以我基本上已经开始,运行和修改了示例应用程序,但我现在正在尝试做一些与教程有关的事情.因此,我对快速和棱角有了基本的了解

我一直在尝试将激活器npm包(https://www.npmjs.org/package/activator)集成到应用程序中,虽然我已经设法适应角位,但我无法插入表达位.这让我产生了一个非常根本的疑问,我无法找到答案.我知道在Mean中,角度代码使用在express中创建的REST API连接到express代码.而且我相信使用角度服务.但我不明白怎么做.例如,users模块定义了以下服务:

angular.module('users').factory('Users', ['$resource',
    function($resource) {
        return $resource('users', {}, {
            update: {
                method: 'PUT'
            }
        });
    }
]);
Run Code Online (Sandbox Code Playgroud)

var sayHello = function(name){
 return "Hello"+name;
}
Run Code Online (Sandbox Code Playgroud)

angular.module('users').factory('Users', ['$resource',
    function($resource) {
        return $resource('users', {}, {
            update: {
                method: 'PUT'
            }
        });
    }
]);
Run Code Online (Sandbox Code Playgroud)

var sayHello = function(name){
 return "Hello"+name;
}
Run Code Online (Sandbox Code Playgroud)

我怎么能通过角度调用它?我知道我们从ngResource模块使用$ resource,但我真的不明白.

任何帮助将非常感激.

rest node.js express angularjs-service meanjs

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

在AngularJS服务之间共享数据

有没有办法在AngularJS中的服务之间共享数据?

使用案例:来自不同服务的数据聚合
例如,我想要一个从REST服务加载一些数据的service1.然后,另一个service2将另外的数据添加到另一个REST API的service1数据中,以创建数据聚合服务.

我基本上想要根据他们使用的API分离服务,但仍然有一个服务,最终保存所有数据.

angularjs angularjs-service

2
推荐指数
2
解决办法
6351
查看次数

angularjs与firebase auth共享服务

晕,所有,

我想使用angularjs与firebase简单登录(facebook).但我不知道如何创建auth共享服务.

我想做的是

  • 创建身份验证服务
  • 使用此身份验证服务检查用户是否登录到每个控制器
  • 控制器将执行$locationif user loggedin/not-login

我也是angularjs的新手,但我不知道在这种情况下我应该使用哪些服务. service还是factory

如何将下面的代码放在角度服务中,然后告诉每个控制器用户是否登录?

var firebaseRef = new Firebase("https://test.firebaseio.com");
var auth = new FirebaseAuthClient(firebaseRef, function(error, user) {
   if (user) {
      console.log(user);
   } else if (error) {
      console.log(error);
   } else {
      console.log('user not login');
   }
});
Run Code Online (Sandbox Code Playgroud)

这是我猜的,如果存在user则从authService控制器中返回值authService.user然后重定向到登录页面,否则显示登录对话框,使用登录按钮调用以下代码

authService.login('facebook');
Run Code Online (Sandbox Code Playgroud)

如果我可以这样做,或者有更好的方法,请告诉我?

angularjs firebase angularjs-service firebase-security

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

angularjs:使用服务在控制器之间进行通信

我有一个注入我的控制器的服务.该服务定义了许多功能.

现在我想向该服务添加一个变量,该变量将在应用程序中保存selectedItem.我这样做了:

angular.module('myservices', []).
factory('serviceA', function () {        

    var serviceA= {  
      selectedItem: selectedItem,      
      ... more functions here
    };
    return serviceA;

    var selectedItem;
    ... functions go here
});
Run Code Online (Sandbox Code Playgroud)

在我的一个控制器中,我设置了所选项目:

 serviceA.selectedItem = someItem;
Run Code Online (Sandbox Code Playgroud)

在另一个控制器中,视图引用所选项目,如下所示:

<span>{{serviceA.selectedItem.value}}</span>
Run Code Online (Sandbox Code Playgroud)

即使正确设置selectedItem,也不会更新范围.我究竟做错了什么 ?

angularjs angularjs-service

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

AngularJS中的JSONP请求不像jQuery那样工作

我想用AngularJS的$ http服务请求Dailymotion API,但它似乎不像jQuery那样工作.

var url = 'https://api.dailymotion.com/videos?fields=id,audience,onair&ids=xzttq2_c,xrw2w0';
Run Code Online (Sandbox Code Playgroud)

请求使用jQuery

jQuery.ajax({
  type: 'GET',
  url: url,
  dataType: 'jsonp',
  success: function(data) {
    console.log('Success', data);
  },
  error: function(data) {
    console.log('Error', data);
  }
});
Run Code Online (Sandbox Code Playgroud)

结果

使用jQuery,它工作正常.我不必使用回调.

Success 
Object {page: 1, limit: 10, explicit: false, has_more: false, list: Array[2]}
Run Code Online (Sandbox Code Playgroud)

请求使用AngularJS

$http({
    method: 'jsonp',
    url: url,
    responseType: "json"
}).
success(function (data) {
    console.log('Success', data);
}).
error(function (data) {
    console.log('Error', data);
});
Run Code Online (Sandbox Code Playgroud)

结果

但是对于Angularjs,它并没有像我预期的那样工作.

Uncaught SyntaxError: Unexpected token : 
Run Code Online (Sandbox Code Playgroud)

jquery jsonp angularjs angularjs-service

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

如何使用angularjs中的字符串从工厂内调用函数

我有一些逻辑我想包装到AngularJS工厂,所以我可以使用angular的依赖注入.由于逻辑是动态的,我不一定知道提前调用什么.我所拥有的是一个字符串,表示要调用的函数的名称.我知道我可以做类似于window["someFunctionName"]()使用字符串运行函数的东西,但由于所有内容都包含在工厂中,我不知道如何引用工厂来调用它.恩. sampleFactory["someFuncitonName"]();

我发现运行该功能的唯一方法是使用eval("someFuncitonName()").显然,如果可以,我想避免使用eval.

这是我正在尝试做的一个例子:

'use strict';

angular.module('testApp')
  .factory('testFactory', function (someData) {

    // User defined code that was wrapped up in a factory
    function foo() {
        someData.amount = 5;
    }
    // End dynamic code

    return {
      funcRunner: function(functionName) {
        testFactory[functionName]();
      } 
    };

  });
Run Code Online (Sandbox Code Playgroud)

在控制器中,用户可以运行这样的东西testFactory.funcRunner("foo");.

有没有办法在这些方面做点什么testFactory[functionName]();?有没有更好的方法来做到这一点?谢谢你的帮助.

更新: 由于注释中的代码是用户定义的,我无法知道,也无法控制注释中的代码是如何编写的.我不想强迫用户施加任何限制.因此,我可以期待很少.

javascript angularjs angularjs-service angularjs-factory

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

Angularjs - 工厂/服务内的Restangular调用

我使用factory如下:

var appModule = angular.module('appModule', ['ngRoute','restangular']);

appModule
  .config(['$routeProvider', function($routeProvider) {
    $routeProvider
      .when('/home', {
        templateUrl: 'home.html',
        controller:  'ngHomeControl'
      })
      .when('/contacts', {
        templateUrl: 'contacts.html',
        controller:  'ngContactControl'
      });
  }]);

appModule
  .factory('testFactory', function testFactory(Restangular) {
    return {
      getFriendList: function() {
        return Restangular
          .all('api/users/getfriendsinvitations/')
          .getList()
          .then(function(response) {
            //
          });
      } 
    }
  });

appModule
  .controller('ngHomeControl', function($scope, testFactory) {
    $scope.homeFriends = testFactory.getFriendList();
  });

appModule
  .controller('ngContactControl', function($scope, testFactory) {
    $scope.contactFriends = testFactory.getFriendList();
  });
Run Code Online (Sandbox Code Playgroud)

在这里,我不能获得的价值$scope.homeFriends$scope.contactFriendsRestangular电话.任何人都可以建议我如何Restangular使用factory/ 来调用值service …

scope angularjs angularjs-service angularjs-factory restangular

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

将依赖项注入AngularJS服务

在阅读有关AngularJS服务的文档时,我偶然发现了如下所示的示例服务:

myApp.service('fooGetter', ['$http', function($http) {
    this.getFoo = function() {
        // use $http to get some foo
    }
}]);
Run Code Online (Sandbox Code Playgroud)

where $http注入到服务包装器中,以便可以从创建的服务实例中引用它.包含参数列表的数组语法的原因是什么,然后在函数参数中重复这些参数?我无法找到一个很好的解释目的,它的规则,以及为什么它是必要的.相同的服务,没有它写,如:

myApp.service('fooGetter', function($http) {
    this.getFoo = function() {
        // use $http to get some foo
    }
});
Run Code Online (Sandbox Code Playgroud)

似乎对该变量有一个非常好的自动引用.

angularjs angularjs-service

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

angularjs未知的提供者

关于堆栈溢出有很多未知的提供者问题,到目前为止我已经看了几个,但没有一个能解决我的问题.如果我找到一个,我会删除这个问题.

这是我的代码看起来像,ExpenseTracker是angular.module:

ExpenseTracker.run(["$provide", "$q",function($provide, $q){
    console.log("define gapi service")
    window.gapiinit = function($q, $provide){
        var gapiPromise = $q.defer().promise;
        var ROOT = 'https://localhost:1800/_ah/api';
        gapi.client.load('expensetTackerapi', 'v1', function() {
                gapiPromise.resolve(gapi);
},      ROOT);
        $provide.factory("gapi",function(){
            return gapiPromise
        })
    }
}]
Run Code Online (Sandbox Code Playgroud)

错误看起来像这样:

Uncaught Error: [$injector:unpr] Unknown provider: $provideProvider <- $provide
http://errors.angularjs.org/1.2.7/$injector/unpr?p0=%24provideProvider%20%3C-%20%24provide
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-service

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

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
查看次数