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

此外,不需要指向ArrayController's content,因为它只是一个代理,因此它是迭代的默认上下文。

于 2013-03-21T12:10:25.913 回答