【问题标题】:Ember.js Controller Does not workEmber.js 控制器不起作用
【发布时间】:2013-10-23 03:40:40
【问题描述】:

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

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>

当我保存这段代码时,页面只呈现“hello”“hello”,我期待“hello tom”“hello tom”。我做错了什么?

感谢您的帮助!

【问题讨论】:

    标签: javascript ember.js controller ember-data


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-04
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多