0

私はember.jsを始めたばかりです。私のマークアップコードは

<script type="text/x-handlebars" data-template-name="home">
        <h1>Names: </h1>
        {{#each home in App.HomeController.content}}
                <h1>Name: </h1>
                {{home.name}}<br />            
        {{/each}}
</script>

そして私のJavaScriptコードは

App = Ember.Application.create();

App.Router.map(function() {
    this.route("home", {
        path: "/"
    });   
});

/*
 *  HomeController
 */
App.HomeController = Ember.ArrayController.extend({
    content: [],
    templateName: 'home',
    init: function(){
        var self = this;

        $.ajax({
            url: 'response.php',
            dataType: 'JSON',
            type: 'POST',            
            success: function(res){                
                self.set('content', res);                
            },
            error: function(){                

            }
        });

    }    

})

しかし、名前を印刷することはできないようです。名前を繰り返して印刷することはできません。どんな体でも私を助けることができますか?

ありがとう

4

1 に答える 1

0

指定する必要があるのは のみcontrollerで、絶対パス ( App.HomeController.content) は必要ありません:

{{#each home in controller}}
  <h1>Name: </h1>
  {{home.name}}<br />            
{{/each}}

この理由:

  • 書くときは、インスタンスではなくクラスEmber.ArrayController.extend()を作成します。Ember が自動的にインスタンスを作成します。
  • 特定のテンプレートのcontroller変数は、テンプレートと同じ名前のコントローラーを指します。あなたの場合:
    1. テンプレート名:home
    2. コントローラー: のインスタンスApp.HomeController

また、 'sは単なる proxy であるため、 ArrayController'sを指す必要はありません。したがって、反復のデフォルトのコンテキストです。content

于 2013-03-21T12:10:25.913 に答える