【发布时间】:2013-01-27 02:37:22
【问题描述】:
情况是这样的。我正在编写一个 Ember.js 示例,其中我在页面上显示一个便签列表。每个注释都有一个固定链接,单击该链接时,会将列表缩小 6 列而不是 12 列,然后在空白处显示注释。单击链接时它工作得很好,但是当我使用后退按钮返回列表时,它不起作用。这是我的代码:
App.Router.map(function(){
this.resource("notes", function(){
this.resource("note", { path: "/:note_id" });
});
});
App.NotesRoute = Ember.Route.extend({
model: function(){
return App.Note.find();
},
setupController: function(controller){
controller.set("isShowing", false);
}
});
App.NoteRoute = Ember.Route.extend({
setupController: function(){
this.controllerFor("notes").set("isShowing", true);
}
});
每个州都有一个模板:
<script type="text/x-handlebars">
<div class="row">
<div class="twelve columns">
<h1>Ember Stickies</h1>
{{outlet}}
</div>
</div>
</script>
<script type="text/x-handlebars" data-template-name="notes">
<div class="row">
<div class="twelve columns">
<h3>My Notes</h3>
</div>
</div>
<div class="row">
<div {{bindAttr class="isShowing:six:twelve :columns"}}>
<ul class="block-grid four-up mobile-one-up">
{{#each note in controller}}
<li class="sticky-list-item">
{{view Ember.TextArea classNames="sticky-note" valueBinding="note.content"}}
{{#linkTo note note classNames="sticky-permalink"}}
∞
{{/linkTo}}
</li>
{{/each}}
</ul>
</div>
{{outlet}}
</div>
</script>
当 Ember 调用 NoteRoutes setupController 时,它会将 isShowing 设置为 true。但是,当我使用后退按钮返回NotesRoute 时,不会调用setupController,因此isShowing 永远不会更改为false。我认为这是有意的 Ember 行为,那么我可以使用回调来挂钩此转换吗?
【问题讨论】:
-
在这种情况下,路由似乎具有
exit函数。但是,当我实现它时,我的note模板永远不会被删除。嗯... -
啊,要打电话给
this._super()
标签: ember.js