Ember.js::无法在视图中呈现Ember.js模型

Ember.js::无法在视图中呈现Ember.js模型,ember.js,rendering,Ember.js,Rendering,如果有人能用这个让我摆脱痛苦,我会非常感激,让我发疯,我知道这将是一件非常简单的事情 我有一个数组: 资料 我想将此信息呈现为collectionView中的子元素: 集合视图 这是我的控制器: 控制器 模板: 但是当我尝试使用Ember.js对象“正确”地执行此操作时,我没有得到任何渲染视图(除了一个空的应用程序视图) 我已经尝试了一些解决方法,比如从视图向控制器添加一个“contentBinding”,看看是否可以强制连接,但仍然没有。重要的是,我通过容器渲染视图,因为我使用Three.js

如果有人能用这个让我摆脱痛苦,我会非常感激,让我发疯,我知道这将是一件非常简单的事情

我有一个数组:

资料 我想将此信息呈现为collectionView中的子元素:

集合视图 这是我的控制器:

控制器 模板: 但是当我尝试使用Ember.js对象“正确”地执行此操作时,我没有得到任何渲染视图(除了一个空的应用程序视图)

我已经尝试了一些解决方法,比如从视图向控制器添加一个“contentBinding”,看看是否可以强制连接,但仍然没有。重要的是,我通过容器渲染视图,因为我使用Three.js拾取渲染内容并进一步操作

总之,我可以在视图中呈现纯数组,但不能从控制器传递任何内容。顺便说一句,由于我可以将控制器的内容记录在init上,所以它肯定是被建立起来的。如果更改视图名称,则控制器不会实例化,因此我知道名称空间正在工作


提前谢谢

我不确定是否包含整个问题,但现在,当您在init()函数中定义控制器时,首先不要忘记调用它。_super()(它将遍历类层次结构并调用构造函数)。也许那只是缺少的东西

编辑:对于新路由器,将视图定义为CollectionView似乎不起作用。 所以我用一个普通的Ember.View替换了它,并在模板中使用了一个{each}助手

<script type="text/x-handlebars" data-template-name="three">
  {{each controller itemViewClass="App.FooView" tagName="ul"}} 
</script>

{{each controller itemViewClass=“App.FooView”tagName=“ul”}
这里是一个最小的工作小提琴:

编辑2:

通过重新阅读这个问题,并看到您尝试将CollectionView内容的属性绑定到controller,我尝试了它,因为它工作正常:)


谢谢你,不幸的是,这不是解决方案,我觉得这一定很明显,但我已经开始尝试一些非常随机的东西,比如缓存清除和更改浏览器。嗯,有可能把它放到JSFIDLE中吗?太棒了!!有一件事,这个数组现在是否通过路由器函数返回值呈现为Ember.js模型?它们不仅仅是js对象。但是你可以很容易地返回一个由三个模型组成的数组:model:function(){return[App.ThreeModel.create({…}),App.ThreeModel.create({…})]}我想就是这样!你的第一把小提琴也起作用了,但是当我在最初的版本中进行绑定时,我做了contentBinding:“App.ThreeController.content”,我现在就尝试一下,但是我很恼火,我必须手动绑定视图和内容,Ember不应该自动处理吗?
App.ThreeView = Ember.CollectionView.extend({
  itemViewClass: Ember.View.extend({    
      click: function(){
        alert('hello')
       },   
    classNames: ['element','foobar'],
    templateName: 'foo'
  })
})
App.ThreeController = Ember.ArrayController.extend({
content: [],
  init: function(){
    var me = this;
    $.each(test,function(k,v){
        var t = App.ThreeModel.create({
            name : v.name,
            town: v.town,
            type: v.type,
            number: v.number
        }) 
        me.addObject( t )
    })
    console.log( me.content )
  }
})
    <script type="text/x-handlebars" data-template-name="application">
        {{outlet}}
    </script>

    <script type="text/x-handlebars" data-template-name="three">
    </script>

    <script type="text/x-handlebars" data-template-name="foo">
        <div class="symbol"> {{ view.content.type }} </div>
        <div class="number"> {{ view.content.number }} </div>
        <div class="name"> {{ view.content.name }} </div>
        <div class="town"> {{ view.content.town }} </div>
    </script>  
App.ThreeView = Ember.CollectionView.extend({
  content: test, // manually added a pure array into view content
  itemViewClass: Ember.View.extend({    
      click: function(){
          alert('hello')
      },    
      classNames: ['element','foobar'],
      templateName: 'foo'
  })
})
<script type="text/x-handlebars" data-template-name="three">
  {{each controller itemViewClass="App.FooView" tagName="ul"}} 
</script>