Ember.js::无法在视图中呈现Ember.js模型
如果有人能用这个让我摆脱痛苦,我会非常感激,让我发疯,我知道这将是一件非常简单的事情 我有一个数组: 资料 我想将此信息呈现为collectionView中的子元素: 集合视图 这是我的控制器: 控制器 模板: 但是当我尝试使用Ember.js对象“正确”地执行此操作时,我没有得到任何渲染视图(除了一个空的应用程序视图) 我已经尝试了一些解决方法,比如从视图向控制器添加一个“contentBinding”,看看是否可以强制连接,但仍然没有。重要的是,我通过容器渲染视图,因为我使用Three.js拾取渲染内容并进一步操作 总之,我可以在视图中呈现纯数组,但不能从控制器传递任何内容。顺便说一句,由于我可以将控制器的内容记录在init上,所以它肯定是被建立起来的。如果更改视图名称,则控制器不会实例化,因此我知道名称空间正在工作Ember.js::无法在视图中呈现Ember.js模型,ember.js,rendering,Ember.js,Rendering,如果有人能用这个让我摆脱痛苦,我会非常感激,让我发疯,我知道这将是一件非常简单的事情 我有一个数组: 资料 我想将此信息呈现为collectionView中的子元素: 集合视图 这是我的控制器: 控制器 模板: 但是当我尝试使用Ember.js对象“正确”地执行此操作时,我没有得到任何渲染视图(除了一个空的应用程序视图) 我已经尝试了一些解决方法,比如从视图向控制器添加一个“contentBinding”,看看是否可以强制连接,但仍然没有。重要的是,我通过容器渲染视图,因为我使用Three.js
提前谢谢 我不确定是否包含整个问题,但现在,当您在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>