【发布时间】:2012-12-16 14:01:51
【问题描述】:
主要思想:在我的控制器成功更新模型的属性后,我想调用一个关闭子视图的视图方法。
模板:
<a {{action showUpdate href=true target="view"}}>update</a>
{{#if view.isUpdate}}
{{#view App.UpdateView}}
...here is a form
<button {{action update}}>Send</button>
{{/view}}
{{/if}}
查看:
App.MainView = Ember.View.extend({
templateName: 'update',
isUpdate: false,
showUpdate: function() {
this.set('isUpdate', !this.get('isUpdate'));
}
});
App.UpdateView= Ember.View.extend();
控制器:
App.MainController = Ember.Controller.extend({
updateCon: function() {
do something
},
...
路由器:
update: function(router, evt) {
router.get('mainController').updateCon();
//router.get('mainController.view').showUpdate(); <-- doesnt work
}
所以我尝试在我的控制器运行良好后在我的路由器中调用它,但它不起作用。
Cannot call method 'showUpdate' of null
这是正确的方法吗?如果是:我错过了什么?否:当我的控制器做某事时如何变形我的视图?
【问题讨论】:
-
1.您的控制器不知道该视图(它没有持有对它的引用)。我认为这在最近的 ember 版本之一中有所改变。 2. 为什么要在视图中存储属性“isUpdate”?为什么不存储在控制器中?这样你就可以在模板中使用 {{#if isUpdate}} 并且 Ember 会自动更新 DOM。您的方法似乎很尴尬,因为您尝试手动更新视图。 Ember 中的常规做法是:更新模型,视图自动反映更改。
标签: javascript model-view-controller ember.js