我使用ember-0.9.8.1.js进行了一些测试,以下代码按预期工作。 之后,我读到了路由器,路由器代码仅在当前的ember-latest.js(16.06.2012)中可用。 我用这个版本测试下面的代码。 问题是列表呈现:
<div id="ember143" class="ember-view">
<ul id="PersonList" class="ember-view ListBox">
<li id="ember179" class="ember-view">
<script id="metamorph-0-start" type="text/x-placeholder"></script>
<script id="metamorph-0-end" type="text/x-placeholder"></script>
</li>
<li id="ember183" class="ember-view">
<script id="metamorph-1-start" type="text/x-placeholder"></script>
<script id="metamorph-1-end" type="text/x-placeholder"></script>
</li>
<li id="ember187" class="ember-view">
<script id="metamorph-2-start" type="text/x-placeholder"></script>
<script id="metamorph-2-end" type="text/x-placeholder"></script>
</li>
<li id="ember191" class="ember-view">
<script id="metamorph-3-start" type="text/x-placeholder"></script>
<script id="metamorph-3-end" type="text/x-placeholder"></script>
</li>
</ul>
</div>
但是空的。
的东西模板:Ember.Handlebars.compile(“{{content.name}}”),
无法正常工作或某些语法方面发生了变化。
代码行
的console.log( “内容”,this.get( '内容'));
单击处理程序中的显示正确的内容,但
Ember.Handlebars.compile( “{{content.name}}”),
不会呈现内容。
这是一个错误???
Javascript代码:
var App = Em.Application.create({
ready: function(){
App.personListController.getData();
}
});
// Model Objects
App.Person = Ember.Object.extend({
name: null,
myTickets: null,
selected: false
});
// Liste von Personen anlegen
App.personListController = Ember.ArrayController.create({
getData: function(){
$.get('json/person.json', function(data) {
var personList = Ember.A([]);
data.forEach(function(item) {
var p = App.Person.create({
'name': item.name,
'myTickets': null,
'selected': false
});
personList.pushObject(p);
});
App.personListController.set('content', personList);
})
},
resetSelection: function(){
App.personListController.content.forEach(function(item){
item.set('selected',false);
})
},
selectedPerson: null
});
App.PersonList = Ember.CollectionView.extend({
tagName: 'ul',
contentBinding: 'App.personListController.content',
classNames: ['ListBox'],
mouseenter: function(event){
console.log("PersonList.content:",this.get('content'));
},
itemViewClass: Ember.View.extend({
template: Ember.Handlebars.compile("{{content.name}}"),
classNameBindings: ['selected:selected'],
selectedBinding: 'content.selected',
click:
function(event){
App.personListController.resetSelection() ;
this.setPath('content.selected',true);
App.personListController.set('selectedPerson',this.get('content'));
console.log("ItemViewInfo selected:",this.getPath('content.selected'));
console.log("content:",this.get('content'));
//this.set('isSelected',true);
}
})
});
HTML:
<script type="text/x-handlebars">
{{#view App.PersonList id="PersonList"}}
{{/view}}
</script>
答案 0 :(得分:2)
这是因为view
的查找上下文在最新提交中发生了变化。现在,如果要在view
上查找属性,则必须前置view
。请参阅commit 8a6c6中的文档更新。
模板因此变为
template: Ember.Handlebars.compile("{{view.content.name}}")
请参阅http://jsfiddle.net/pangratz666/DsdHU/。
Tom Dale有一个Gist,可以进一步解释这些变化。
答案 1 :(得分:0)
最新的ember.js(以及ember-1.0.pre.js)不再包括把手了,你必须自己包括它。
您还必须自己启动事件循环: 的 !! - &GT;好像你不再需要了...... !!
App.initialize();
..相关的jsfiddle:http://jsfiddle.net/aGMzD/