Ember.js 余烬.js';入门代码段为每个导航复制模板
我最近一直在学习有关Ember的知识,我一直在他们网站的“指南”部分中使用示例,我对以下代码片段有问题: 1) JavascriptEmber.js 余烬.js';入门代码段为每个导航复制模板,ember.js,Ember.js,我最近一直在学习有关Ember的知识,我一直在他们网站的“指南”部分中使用示例,我对以下代码片段有问题: 1) Javascript App = Ember.Application.create(); App.Person = Ember.Object.extend({ firstName: null, lastName: null, fullName: function() { return this.get('firstName') + " "
App = Ember.Application.create();
App.Person = Ember.Object.extend({
firstName: null,
lastName: null,
fullName: function() {
return this.get('firstName') +
" " + this.get('lastName');
}.property('firstName', 'lastName')
});
App.ApplicationRoute = Ember.Route.extend({
model: function() {
var people = [
App.Person.create({
firstName: "Tom",
lastName: "Dale"
}),
App.Person.create({
firstName: "Yehuda",
lastName: "Katz"
})
];
return people;
}
});
App = Ember.Application.create();
App.Person = Ember.Object.extend({
firstName: null,
lastName: null,
fullName: function() {
return this.get('firstName') +
" " + this.get('lastName');
}.property('firstName', 'lastName')
});
App.IndexRoute = Ember.Route.extend({
model: function() {
var people = [
App.Person.create({
firstName: "Tom",
lastName: "Dale"
}),
App.Person.create({
firstName: "Yehuda",
lastName: "Katz"
})
];
return people;
}
});
2) HTML
人
{{{#每个模型}
- 你好,{{fullName}}李>
{{/每个}}
当我导航到该网站时,它会按预期正确显示页面和名称。然后我导航到localhost:80/#,它复制了模板,因此所有内容都显示了两次。当我使用浏览器的箭头控件来回导航时,每次都会在页面底部追加/复制模板
我真的不明白它为什么会这样。想法?当你到达一条路线时,模型钩子会被踢开,而这条路线是动态的,下面类似的东西更像是ember esk
App = Ember.Application.create();
App.Person = Ember.Object.extend({
firstName: null,
lastName: null,
fullName: function() {
return this.get('firstName') +
" " + this.get('lastName');
}.property('firstName', 'lastName')
}).reopenClass({
people: [],
find: function() {
this.people.clear(); //so find doesn't create duplicates each time
var first = App.Person.create({ firstName: "Tom", lastName: "Dale" });
var last = App.Person.create({ firstName: "Yehuda", lastName: "Katz" });
this.people.pushObject(first);
this.people.pushObject(last);
return this.people;
}
});
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return App.Person.find();
}
});
此外,您通常不会使用基础应用程序模板/view/controller/route中的“模型”,因此创建一个简单的模型并让该路径执行find()可能更有意义(以避免遇到重复问题)在Ember.js上发布了另一条建议。归功于用户teddyzeenny 在应用程序路径中返回模型会导致重新渲染。最好使用IndexRoute而不是ApplicationRoute 1) Javascript
App = Ember.Application.create();
App.Person = Ember.Object.extend({
firstName: null,
lastName: null,
fullName: function() {
return this.get('firstName') +
" " + this.get('lastName');
}.property('firstName', 'lastName')
});
App.ApplicationRoute = Ember.Route.extend({
model: function() {
var people = [
App.Person.create({
firstName: "Tom",
lastName: "Dale"
}),
App.Person.create({
firstName: "Yehuda",
lastName: "Katz"
})
];
return people;
}
});
App = Ember.Application.create();
App.Person = Ember.Object.extend({
firstName: null,
lastName: null,
fullName: function() {
return this.get('firstName') +
" " + this.get('lastName');
}.property('firstName', 'lastName')
});
App.IndexRoute = Ember.Route.extend({
model: function() {
var people = [
App.Person.create({
firstName: "Tom",
lastName: "Dale"
}),
App.Person.create({
firstName: "Yehuda",
lastName: "Katz"
})
];
return people;
}
});
2) HTML
{{outlet}}
人
{{{#每个模型}
- 你好,{{fullName}}李>
{{/每个}}
在他提出的拉动请求中进行了更多讨论:
在ApplicationRoute中返回模型可能会导致应用程序失败
在某些情况下要重新渲染的模板()
应用程序模板不应重新呈现,因为它是附加的
到主体,因此在重新渲染时会导致重复模板
这个PR还添加了一个{{outlet}},因为有些人正在使用它
作为一个起点,准备一个插座将使
他们更容易在示例的基础上构建
我把这个例子放到一个JSBin中,它似乎起了作用:我确实提到它起了作用。奇怪的行为是当我导航时。它可以在该jsbin中重新创建吗?我似乎无法在jsbin中导航。如果您删除
/edit
部分,您可以直接访问该页面:在emberjs.com上的相关讨论线程上发布了另一个解决方案,其中讨论了使用Application.IndexRoute。你对此有何看法?很难说-这不是在这里发布的:)我在这里发布了他的答案以供将来参考。我认为从你发布的回复来看,关于重新进入的观点是有效的,而且是好的,但我仍然认为值得一提的是,你从来没有使用过应用程序路径本身的“模型”(这可能是你一开始就感到痛苦的原因). 相反,应用程序只是某种“起点”。从这里,我将创建一个直接处理模型的人员路由/控制器/视图/模板(让应用程序路由/视图不知道模型状态)