【问题标题】:Trying to call factory method试图调用工厂方法
【发布时间】:2015-11-16 22:18:07
【问题描述】:

我收到以下错误: TypeError: MyTheme.register 不是函数

因为我试图从我的控制器文件夹中的包中调用此函数。我试过了:

vm.register = function() {
    MyTheme.register(this.user);
};

我也试过这个:

vm.register = function() {
    MyTheme.prototype.register(this.user);
};

我的两次尝试都没有成功。

该函数位于我位于 services/myTheme.js 的包中:

'use strict';

angular.module('mean.myTheme').factory('MyTheme', [
  function() {
    MeanUserKlass.prototype.register = function(user) {
      $http.post('/api/register', {
        email: user.email,
        password: user.password,
        confirmPassword: user.confirmPassword,
        username: user.username,
        name: user.name
      })
        .success(this.onIdentity.bind(this))
        .error(this.onIdFail.bind(this));
    };

    return {
      name: 'myTheme'
    };
  }
]);

【问题讨论】:

    标签: javascript angularjs mean-stack mean.io


    【解决方案1】:

    你需要这个:

    var module = angular.module('MyModule');
    module.factory('MyFactory', function () {
        return { // all of this will be available, when you inject MyFactory
            someFoo: function () {}
        }
    });
    module.controller('MyCtrl', ['MyFactory', function (MyFactory) {
        MyFactory.someFoo(); // available now
    }])
    

    【讨论】:

      【解决方案2】:

      您需要在返回对象中公开该函数,或者可能只是返回您的 MeanUserKlass 对象。这是一篇关于工厂和原型的文章:http://blog.revolunet.com/blog/2014/02/14/angularjs-services-inheritance/

      【讨论】:

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