2016-05-15 5 views
1

次の角jsのコードはエラー - "angular.js:13550 TypeError例外:プロパティを読み取ることができません 'コンパイル' 未定義のを" スローコード -angular.js:13550 TypeError:未定義の 'compile'プロパティを読み取れませんか?

ためHelloWorld.html

<!DOCTYPE html> 
    <html ng-app="module1"> 
    <head> 
     <title>My First Custom Directive</title> 
     <script src="../angular.js"></script> 
     <script src="helloworldDirective.js"></script> 
    </head> 
    <body> 
     <hello-world></hello-world> 
    </body> 
    </html> 

helloWorldDirective.js -

(function() { 

    var module1=angular.module('module1',[]); 
    module1.directive('helloWorld',function(){ 
     return 
     { 
      template:'Hello Somesh!!Keep it up.' 
     }; 

    }); 


}()); 

しかし、私は次のコードでJavaスクリプトファイルを置き換えます。

(function() { 

    var module1=angular.module('module1',[]); 
    var helloWorld=function() 
{ 
var directive={};  
directive.template='Hello Somesh!!Keep it up.'; 
return directive; 
} 
module1.directive('helloWorld',helloWorld); 

}()); 

どちらのコードも基本的に同じことを行っていますが、いずれも失敗しています。何かご意見は?

答えて

1

最初の例では、「到達不能なコードエラー」があります。

あなたはしてこのエラーを修正することができます:あなたは属性へのポインタを取得することはできません

return template = {template: 'Hello Somesh!!Keep it up.'}; 
エルス

。この中

return 
     { 
      template:'Hello Somesh!!Keep it up.' 
     }; 

return; 
     { 
      template:'Hello Somesh!!Keep it up.' 
     }; 

リターン、役に立たないコードブロックが続き

+0

ごめんなさい:最初に、あなたの最初の例は動作しませんでした、今それはありません。唯一の違いは:私は全体を1行に入れ、コロンと引用の間に空白を入れました。 –

0

のJavaScriptの自動セミコロンインジェクションはこれをオンにします。 (template:はラベルとして扱われます)

デバッグヒント:JSHintまたはJSLintがこのエラーを検出していました。

スタイルヒント:JavaScriptでは、常に同じ行に中かっこを保持しますが、この特定の問題ではreturnthrowという文だけが影響を受けます。

+0

ありがとうございます:) –

0

使用あなたのディレクティブを定義するには、この方法:

app.directive('helloWorld', [function() { 
    return { 
     restrict: 'E', 
     transclude: false, 
     template: 'Hello Somesh!!Keep it up.' 
    } 
}]); 
関連する問題