Ember.js 将控制器链接到动态添加的视图
嗨,非常感谢你的回答! 我试图了解余烬及其结构 这就是我一直坚持的地方:我有一个视图,可以随时随地添加到我的web应用程序中(模式视图)。我想将此视图与特定控制器链接,以处理事件、状态和其他行为 但我不知道这怎么可能!这是我的应用程序结构中的错误还是来自其他地方的问题?(我?) 下面是代码的相关部分 /views/post\u news\u popup.jsEmber.js 将控制器链接到动态添加的视图,ember.js,Ember.js,嗨,非常感谢你的回答! 我试图了解余烬及其结构 这就是我一直坚持的地方:我有一个视图,可以随时随地添加到我的web应用程序中(模式视图)。我想将此视图与特定控制器链接,以处理事件、状态和其他行为 但我不知道这怎么可能!这是我的应用程序结构中的错误还是来自其他地方的问题?(我?) 下面是代码的相关部分 /views/post\u news\u popup.js App.PostNewsPopupView = Ember.View.extend({ templateName: '_post-
App.PostNewsPopupView = Ember.View.extend({
templateName: '_post-news',
close: function() { /*...*/ },
save: function() { /*...*/ }
});
App.PostNewsPopupController = Ember.ObjectController.extend({
actions: {
close:function() { /*...*/ },
save:function() { /*...*/ }
}
});
index.html
{{view App.PostNewsPopupView}}
...
<script type="text/x-handlebars" data-template-name="_post-news">
<form {{ action "save" on "submit"}}>
{{view Ember.TextField valueBinding="name" placeholder="Fill in a name..."}}
{{view Ember.TextArea valueBinding="description" placeholder="Fill in a description..."}}
<button {{action 'close'}}>Cancel</button>
<button>Post news</button>
</form>
</script>
我没有找到将PostNewsPopupController链接到PostNewsPopupView的方法。
我尝试了很多方法,但控制器的函数和视图的函数都没有被调用
我知道当浏览到某个路由时,会自动设置控制器,但这里没有特定的路由,我不想将所有代码都放在ApplicationController中
谢谢你帮我,如果问题是。。。愚蠢D您应该将以下代码添加到连接到模板的路由中,您当前正在该模板中使用视图辅助对象(我不知道其名称:-): 将此添加到您的路线中:
renderTemplate: function(controller, model) {
this._super(controller, model);
this.render('postNewsPopup', {
outlet: 'modalOutlet',
});
}
{{outlet modalOutlet}}
将插座添加到要添加视图的模板中:
renderTemplate: function(controller, model) {
this._super(controller, model);
this.render('postNewsPopup', {
outlet: 'modalOutlet',
});
}
{{outlet modalOutlet}}
这将把PostNewsPopupView呈现到连接到PostNewsPopupController的modalOutlet中。
更多信息:
renderTemplate: function(controller, model) {
this._super(controller, model);
this.render('postNewsPopup', {
outlet: 'modalOutlet',
});
}
{{outlet modalOutlet}}
render方法接受更多参数。下面是渲染方法的完整示例:
this.render('your', { // the template/view to render
into: 'index', // the template to render into
outlet: 'someOutlet', // the name of the outlet in that template
controller: this.controllerFor("another") // the controller to use for the template
});
这会将类型为App.YourView的视图呈现到名为someOutlet的门店的索引模板中。视图将连接到应用程序的控制器实例。另一个控制器请检查以下内容是否有用。声明视图时指定上下文
App.PostNewsPopupView = Ember.View.extend({
templateName: '_post-news',
controller:App.PostNewsPopupController.create()
});
App.PostNewsPopupController = Ember.ObjectController.extend({
actions: {
close:function() { /*...*/ },
save:function() { /*...*/ }
}
});
您的两种解决方案都有效!!我尝试过类似的方法,但我认为我的控制器是在我的视图之后声明的。我改变了依赖项的顺序,现在它可以正常工作了!谢谢你非常有帮助的回答!这样,您将无法访问控制器,因此无法为其分配内容(没有黑客攻击)。所以这对我来说很没用。事实上,在进一步阅读/编码/观看之后。。。您的解决方案确实是最“先进”的解决方案,并且由于其灵活性而最受推荐!那时候我是为你移民的。也非常感谢您的额外解释!您的两种解决方案都有效!!我不知道这样的解决方案,但我认为它将对我的web应用程序的继续非常有帮助!谢谢!这个解决方案听起来也更被EmberJS“接受”。事实上,以前的解决方案在中没有很好地检测到。这个看起来有点难,但实际上更好。谢谢你们两位!