Ember.js 控制器不起作用

Ember.js Controller Does not work

本文关键字:不起作用 控制器 js Ember      更新时间:2023-09-26

我无法访问我的数组控制器变量。我有这个简单的应用程序,例如:

应用.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>

当我保存此代码时,页面只是呈现"你好"你好",我期望"你好汤姆"你好汤姆"。我做错了什么?

感谢帮助!

问题是您将每个语句中的上下文更改为模型,因此上下文中不再具有该名称。

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}}