2013-03-21 77 views
0

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

      } 
     }); 

    }  

}) 

但似乎我不能打印的名字。我无法迭代打印名称&。有谁能够帮助我。

感谢

回答

0

你只需要提供controller,从来没有一个完整路径(App.HomeController.content):

  • 当你写Ember.ArrayController.extend(),您创建一个:

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

    的这种情况的原因,而不是实例。 Ember将自动为您创建实例。

  • 给定模板中的controller变量指向与模板同名的控制器。你的情况:
    1. 模板名称:home
    2. 控制器:中App.HomeController

同样情况下,就没有必要指向一个ArrayControllercontent,因为它只是一个代理,因此它是迭代的默认上下文。