angularjs - 不使用全局变量的 angular.factory 中 $resource 的动态 URL

标签 angularjs factory mean-stack

如何在不使用 $rootScope 的情况下以从 Controller 传递 URL 的方式定义动态工厂?

  .factory('getData', function ($resource,$rootScope) {
        return $resource($rootScope.url, {id:'@id'}{
            'query': { method: 'GET', isArray: true},
            'get': {
                method: 'GET',
                isArray: true,

                transformResponse: function (data) {
                    data = angular.fromJson(data);
                    return data;
                }
            }
        });
    })

Controller
   var data = [];
            $rootScope.url='/userDetails/userId?userId=userID'
            getData.get({id:'123'}).$promise.then(function(data){
            angular.forEach(data,function(dataVal){
             //
            },data)

最佳答案

您应该在工厂中创建一个函数,然后在调用它时将 URL 和 id 作为参数传递给该函数。

对于您的代码,工厂应如下所示:

.factory('getData', function($resource, $rootScope) {
  return {
    query: function(url, id){
      return $resource(url, {userId: id}, {
        'query': {
          method: 'GET',
          isArray:true
        },
        'get': {
          method: 'GET',
          isArray:true,

          transformResponse: function(data) {
            console.log(data);
            data = angular.fromJson(data);
            return data;
          }
        }
      }).get();
    }
  }
})

然后你会像这样调用它 getData.query(url,id)在 Controller 中。

关于angularjs - 不使用全局变量的 angular.factory 中 $resource 的动态 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313714/

相关文章:

javascript - 新函数返回新函数

javascript - 如何将jenkins与mean stack应用程序集成

angularjs - 为什么 Karma 显示范围错误?

angularjs - 我如何在 AngularJS 的数据绑定(bind)中放置一个条件?

javascript - 如何在同一个应用程序中设置两个$routeParams?

javascript - 使用我的浏览器访问本地主机页面但服务器正在运行时出现错误 "str.substr is not a function"?

gruntjs - 构建过程 - MEAN(Mongo、Express、Angular、Node)堆栈的最佳实践?

mysql - Angularjs 日期格式化和排序

工厂函数返回元组的 C++11 模式

c++ - 这是编写我的工厂方法的最佳方式吗