【问题标题】:How to pass parameter to module in angularjs如何将参数传递给angularjs中的模块
【发布时间】:2013-04-28 23:49:48
【问题描述】:

我正在查看 angularjs 示例,我找到了这个示例:

// This is a module for cloud persistance in mongolab - https://mongolab.com
angular.module('mongolab', ['ngResource']).
factory('Project', function($resource) {
  var Project = $resource('https://api.mongolab.com/api/1/databases' +
      '/angularjs/collections/projects/:id',
      { apiKey: '4f847ad3e4b08a2eed5f3b54' }, {
        update: { method: 'PUT' }
      }
  );

  Project.prototype.update = function(cb) {
    return Project.update({id: this._id.$oid},
        angular.extend({}, this, {_id:undefined}), cb);
  };

  Project.prototype.destroy = function(cb) {
    return Project.remove({id: this._id.$oid}, cb);
  };

  return Project;
});

我不想使用诸如https://api.mongolab.com/api/1/databases/angularjs/collections/projects/:id 之类的魔术字符串静态资源,而是希望在服务器上定义它,然后将其传递到模块中。我的问题是,如何参数化模块,即如何将 javascript 变量从外部传递到模块中?

【问题讨论】:

标签: angularjs


【解决方案1】:

只有当您想要公开一个 API 以进行应用程序范围的配置时,您才应该使用 Provider 配方,该 API 必须在应用程序启动之前进行。这通常只适用于其行为可能需要在应用程序之间略有不同的可重用服务。

var app = angular.module('mongolab', ['ngResource'])
app.provider('project', function projectProvider(){
    var resourceUrl = false;

    this.resourceUrl = function(url){
        this.resourceUrl = url;
    }

    this.$get = [function project(){
        return new Project(resourceUrl);
    }];
});

function Project(resourceUrl) {
  var Project = $resource(resourceUrl,
      { apiKey: '4f847ad3e4b08a2eed5f3b54' }, {
        update: { method: 'PUT' }
      }
  );

  Project.prototype.update = function(cb) {
    return Project.update({id: this._id.$oid},
        angular.extend({}, this, {_id:undefined}), cb);
  };

  Project.prototype.destroy = function(cb) {
    return Project.remove({id: this._id.$oid}, cb);
  };

  return Project;
});

然后你可以配置它

app.config(["projectProvider", function(projectProvider){
    projectProvider.resourceUrl('https://api.mongolab.com/api/1/databases' +
        '/angularjs/collections/projects/:id')
}]);

【讨论】:

    猜你喜欢
    • 2017-12-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多