2015-01-02 6 views
32

AngularJsでファクトリメソッドを取得します$から値を返す必要があります。しかし、私はこのエラープロバイダ 'xxは' 私は</p> <pre><code>module.factory('LogService', function() { function log(msg) { console.log("Rahkaran:" + new Date() + "::" + msg); } return { log: log }; }); </code></pre> <p>以下のように<code>angularjs</code>工場を書かれている

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

を取得保管しました

私は、エラーについてのグーグルと私は解決策を見つけることができませんでした。

は偶然私はこの

return{ 
    log: log 
}; 

return文を変更し、エラーが消えた!!

{returnの前にあるか、次の行に違いがありますか?

+0

http://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion-asi –

答えて

42

これは、return文が自動セミコロン挿入(ASI)の影響を受けている

自動セミコロン挿入と呼ばれています。 returnキーワードと式の間には、行終端文字;はありません。

return 
a + b; 

// is transformed by ASI into 

return; 
a + b; 

だから、次の行にない復帰の前で{を挿入する必要があります。

参考:お使いの場合には https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return

1

非未定義値が返さ常に存在します。 しかし、それ以外の場合は、工場からnullまたは未定義の値を返すこともあります。