【问题标题】:Provider 'xx' must return a value from $get factory method in AngularJsProvider 'xx' 必须从 AngularJs 中的 $get 工厂方法返回一个值
【发布时间】:2015-12-28 13:56:51
【问题描述】:

我写了一个angularjs工厂如下

module.factory('LogService', function () {

    function log(msg) {
        console.log("Rahkaran:" + new Date() + "::" + msg);
    }

    return 
    {
        log: log
    };

});

但我一直收到这个错误

Provider 'LogService' must return a value from $get factory method

我用谷歌搜索了这个错误,但找不到任何解决方案。

巧合的是,我把return 语句改成了这个

return{
    log: log
};

错误消失了!!

{return 前面或在下一行之间有什么区别吗?

【问题讨论】:

标签: javascript angularjs


【解决方案1】:

这称为自动分号插入

return 语句受自动分号插入 (ASI) 的影响。 return 关键字和允许的表达式之间没有行终止符 ;

return
a + b;

// is transformed by ASI into

return; 
a + b;

所以你必须在 return 前面插入{ 并且不要在下一行。

参考: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return

【讨论】:

    【解决方案2】:

    在您的情况下,总会返回一个未定义的值。 但在其他情况下,问题也可能是您确实从工厂返回了 null 或 undefined 值。

    【讨论】:

      猜你喜欢
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多