2012-10-14 6 views
6

は私のディレクティブです:Angular JSでは、ディレクティブ属性のデータをテンプレートに挿入するにはどうすればよいですか?ここ

app.directive("helloWorld", function() { 
    return { 
    restrict: "E", 
    scope: { 
     name: "bind" 
    }, 
    template: "<div>a {{name}} a</div>" 
    }; 
}); 

は、ここで私はそれを使用する方法は次のとおりです。

<hello-world name="John Smith"></hello-world> 

私はそれを実行したとき、私は、このページはこのようなことを期待:

<hello-world> 
    <div>a John Smith a</div> 
</hello-world> 

しかし、いくつかのために理由は、nameは注入されず、実際の結果は次のようになります。

<hello-world> 
    <div>a {{name}} a</div> 
</hello-world> 

私は行方不明のものは何ですか?私はAngular JS 1.0.2を使用しています

答えて

14

スコープ宣言が奇妙です。私は"bind"宣言についてはわかりません - それは以前のバージョンのものかもしれません。

ディレクティブの属性への結合のための現在の構文は次のようである:一般的に

return { 
    restrict: "E", 
    scope: { 
     name: "@name" 
    }, 
    template: "<div>a {{name}} a</div>" 
}; 

@attributeNamemore information on directivesについてはこちらをご覧ください。

+0

私自身の質問にちょうど答えました。それから、すでに回答がありました:-) https://groups.google.com/forum/?fromgroups=#!topic/angular/tfArd7DuFxs – agibalov

+1

さらに詳しい情報を追加することをお勧めします範囲について。 "@name"は、親スコープ内の指定されたプロパティにバインドします。 "= getName()"は、親スコープ内のAngle式 'getName()'の値にバインドされます。と "&doStuff()"は、呼び出されたときに与えられた角度式を実行するスコープに関数をバインドします。 – qualidafial

関連する問題