任务:
在灯箱中打开表单以创建新的“事件”;打开的表格应该可以收藏。
路障:
- 有使用
{{action}}
标签打开灯箱的示例,但找不到以自己的路线打开的灯箱。 - 有许多使用旧版本 ember.js 的示例。
- 没有很多与 ember-data 和 REST 相关的文档(我知道,我知道......它还没有“准备好生产”)。
问题:
表单中的字段没有绑定到支持模型,因此“null”被发布到我的 servlet(一个 Spring 控制器)。
我的第一次迭代与最终结果(jsfiddle)相差不远。最终使它起作用的东西交换了这个:
EP.EventsNewRoute = Ember.Route.extend({
...
setupController : function(controller, model) {
controller.set("model", model);
},
...
});
...为了这:
EP.EventsNewRoute = Ember.Route.extend({
...
setupController : function(controller, model) {
this.controllerFor("events-new").set("model", model);
},
...
});
问题:
为什么需要调用 setupController 函数controllerFor
才能正确设置模型?
最后,由于我很难找到一个功能齐全的示例,我想让它易于访问(并希望发现改进)。
这是小提琴:http: //jsfiddle.net/6thJ4/1/
这里有几个片段。
HTML:
<script type="text/x-handlebars">
<div>
<ul>
{{#linkTo "events.new" tagName="li"}}
Add Event
{{/linkTo}}
</ul>
</div>
{{outlet events-new}}
</script>
<script type="text/x-handlebars" data-template-name="events-new">
<form>
<div>
<label>Event Name:</label>
{{view Ember.TextField valueBinding="name"}}
</div>
<div>
<label>Host Name:</label>
{{view Ember.TextField valueBinding="hostName"}}
</div>
</form>
</script>
JavaScript:
...
EP.Router.map(function() {
this.resource("events", function() {
this.route("new");
});
});
EP.EventsNewRoute = Ember.Route.extend({
model : function() {
return EP.Event.createRecord();
},
setupController : function(controller, model) {
//controller.set("model", model); // Doesn't work? Why not?
this.controllerFor("events-new").set("model", model); // What does this do differently?
},
...
});
EP.EventsNewController = Ember.ObjectController.extend({
save : function() {
this.get("content.transaction").commit(); // "content.store" would commit _everything modified_, we only have one element changed, so only "content.transaction" is necessary.
}
});
EP.EventsNewView = Ember.View.extend({
...
});
EP.Event = DS.Model.extend({
name : DS.attr("string"),
hostName : DS.attr("string")
});
资源:
- http://emberjs.com/guides/routing/setting-up-a-controller/
- http://emberjs.com/guides/getting-started/toggle-all-todos/(试图模仿我学到的东西,但是将添加新的东西变成新的路线)
- 编写 LightboxView 会导致问题/集成 DOM 操作 jQuery-Plugins 使操作无法使用(灯箱“示例”)
- Ember 中的可靠视图(另一个灯箱“示例”,但没有打开灯箱的路线)