迭代&在ember.js中打印值

时间:2013-03-21 11:12:59

标签: ember.js

我刚开始使用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(){                

            }
        });

    }    

})

但似乎我不能打印名字。我不能迭代&amp;打印名称。任何人都可以帮助我。

由于

1 个答案:

答案 0 :(得分: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
    3. 的实例

此外,没有必要指向ArrayController的{​​{1}},因为它只是一个代理,因此它是迭代的默认上下文。