2

ember.js テンプレートに次のコードがあります。userController は、複数の「ユーザー」を含む ArrayController です。

{{#each CollaborativeEditor.userController}}
    {{#view CollaborativeEditor.OnlineUserView userBinding="this"}}
        <div class="avatar">
            <div class="avatar_name">{{name}}</div>
            <div class="avatar_status">{{status}}</div>
        </div>
        <div id="dropdown-1">
            <ul>
                <li><a href="#" {{action startChat target="onlineUser"}}>Talk to </a></li>
            </ul>
        </div>
    {{/view}}
{{/each}}

これは、それぞれのビューのコードです:

CollaborativeEditor.OnlineUserView = Ember.View.extend({
    tagName: 'li',
    startChat : function() {
        console.log(this.get('user'));
    }       
});

名前とステータスはユーザーごとに正しく設定されますが、リンクに添付された startChat アクションは、常にアレイの最初のユーザーをコンソールに出力します。バインディングの何が問題になっていますか?

4

1 に答える 1

2

jsfiddle に入れるようにとのリクエストに感謝します!

そこでエラーを再現しようとしているうちに、問題に気づきました。これは、ember とは関係ありません。

id="dropdown-1" を持つ div は別のリンクから呼び出され、常に同じ ID であったため、常に同じユーザー バインディングと同じアクションになります。

これで Id をユーザー オブジェクトにバインドし、完全に機能するようになりました。

于 2012-11-20T13:48:07.247 に答える