2013-10-23 57 views
2

我無法訪問我的數組控制器變量。我有例如這個簡單的應用:Ember.js控制器不起作用

App.js

App = Ember.Application.create(); 

App.ApplicationAdapter = DS.FixtureAdapter.extend(); 

App.Router.map(function() { 
    this.route('hello'); 
}); 

App.IndexRoute = Ember.Route.extend({ 
     redirect: function() { 
     this.transitionTo('hello'); 
     } 
}); 

App.HelloController = Ember.ArrayController.extend({ 
    name: 'tom' 
}); 

App.HelloRoute = Ember.Route.extend({ 
    model: function() { 
      return this.store.find('hello'); 
    } 
}); 

App.Hello = DS.Model.extend({ 
    title: DS.attr('string') 
}); 

App.Hello.FIXTURES = [{ 
    id: 1, 
    title: 'hello' 
},{ 
    id: 2, 
    title: 'hello' 
}]; 

和我的看法是:

<script type="text/x-handlebars" data-template-name="application"> 
<h2>Welcome to Ember.js</h2> 

{{outlet}} 
</script> 


<script type="text/x-handlebars" data-template-name="hello"> 
    {{#each}} 
    {{title}} {{name}} 
    {{/each}} 
</script> 

當我將這段代碼保存的頁面只呈現「你好」,「你好」和我期待「你好湯姆」「你好湯姆」。我做錯了什麼?

幫助表示讚賞!

回答

2

問題在於,您正在將每個語句中的上下文更改爲模型,因此您不再使用上下文中的名稱。

http://emberjs.jsbin.com/UzUxIwa/1/edit

<script type="text/x-handlebars" data-template-name="hello"> 
    {{#each item in controller}} 
    {{item.title}} {{controller.name}} 
    {{/each}} 
</script> 

老實說比這更好的辦法是使用一個itemController,並把這樣的性質:控制器

http://emberjs.jsbin.com/UzUxIwa/2/edit

App.HelloController = Ember.ArrayController.extend({ 
    itemController:'singleHello' 
}); 

App.SingleHelloController = Ember.ObjectController.extend({ 
    name: 'tom' 
}); 

{{#each item in controller}} 
    {{item.title}} {{item.name}}</br> 
{{/each}} 
+0

這個工程上,謝謝! – cmszc