Ember.js ::无法呈现ember.js模型
如果任何人都可以让我摆脱这种痛苦,我将不胜感激,让我生气,我知道这会变得愚蠢简单。
我有一个数组:
数据
var test = [{"name":"Kober Ltd","town":"Bradford","type":"Z1CA","number":3650645629},
{"name":"Branston Ltd.","town":"Lincoln","type":"Z1CA","number":3650645630}]
我想将这个信息作为一个collectionView中的子元素来呈现:
的CollectionView
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>
我正在使用最新的Ember so ... V2路由器,它将所有部件以'Three'名称同步。 如果我将数组直接放入视图中,每个方法都可以工作:
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'
})
})
但是,当我尝试这样做'正确',使用Ember.js对象,我没有得到渲染的意见(除了一个空的应用程序视图)。
我已经尝试过解决方法,比如从视图向控制器添加'contentBinding',以查看是否可以强制连接但仍然没有任何内容。 当我使用Three.js拾取渲染的内容并进一步操作时,通过容器渲染视图非常重要。
所以,总结一下:我可以在视图中呈现纯数组,但没有任何东西从控制器传递过来。 顺便说一下,控制器肯定是由于我可以在init上控制日志记录它的内容。 如果我更改视图名称,控制器没有实例化,所以我知道命名空间正在工作。
提前致谢!
我不确定是否接受了整个问题,但现在,在定义控制器时,在init()函数中,首先不要忘记调用this._super()(它将通过类层次结构并调用构造函数)。 也许这只是失踪的事情。
编辑:它似乎与新的路由器,定义一个视图作为一个CollectionView不起作用。 所以我用普通的Ember.View替换它,并在模板中使用{each}助手。
<script type="text/x-handlebars" data-template-name="three">
{{each controller itemViewClass="App.FooView" tagName="ul"}}
</script>
这里是一个最小工作小提琴:http://jsfiddle.net/Sly7/qCdAY/14/
编辑2:
通过重新阅读这个问题,并且看到你尝试将CollectionView内容的属性绑定到控制器,我试了一下,因为它工作正常:)
http://jsfiddle.net/Sly7/qCdAY/15/
链接地址: http://www.djcxy.com/p/60811.html上一篇: Ember.js :: Cannot render ember.js models in view
下一篇: In ember, how do I pass view data from a drag into a drop?