gpt4 book ai didi

javascript - Ember.Select 在使用路由器的应用程序中的 contentBinding

转载 作者:行者123 更新时间:2023-11-29 16:19:40 29 4
gpt4 key购买 nike

我有一个使用 Ember.Router structure 的 Ember.js 应用程序.

我的应用结构看起来像

window.App = Ember.Application.create {
#Truncated idea of app, not including application controller or any of that
MainController = Ember.Controller.extend()
MainView = Ember.View.extend
templateName: 'main-template'

因此, Controller 和 View 是扩展,而不是创建在应用程序创建时。然后有连接网点的路线

Router: Ember.Router.extend
root: Ember.Route.extend
main: Ember.Route.extned
route: '/'
connectOutlets: (router, event) ->
router.get('applicationController').connectOutlet('main')

我需要绑定(bind)一个 <select>标记为一组值。 Ember.Select看起来这是一个很好的方法,所以我为选择添加了一个 Controller 和 View 扩展

MySelectController: Ember.ArrayController.extend
contents: [{id:1,title:'test'},{id:2,title:'test2'}]
MySelectView: Ember.Select.extend
contentBinding: this.get('controller')
contentValuePath: 'id'
contentLabelPath: 'title'

这行不通。我收到关于 this.get('controller') 的错误当我尝试将 {{#view App.MySelectView}} 包含在 View 中时

我该如何正确执行此操作?

最佳答案

下面是我将如何实现的示例:the jsfiddle

Handlebars 模板:

<script type="text/x-handlebars" data-template-name="application">
<header>
<h1>Ember Router Sample</h1>
</header>
{{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="myForm">
{{view view.mySelectView
selectionBinding="controller.selected"
contentBinding="view.controller.content.persons"
}}
{{view Ember.TextField valueBinding="controller.selected.name"}}
</script>

javascript:

App = Ember.Application.create();

App.ApplicationController = Em.Controller.extend();
App.ApplicationView = Em.View.extend({
templateName: 'application'
});

App.MySelectController = Em.ArrayController.extend();

App.MyFormController = Em.Controller.extend({
selected: null,
});

App.MyFormView = Ember.View.extend({
templateName: 'myForm',
mySelectView: Em.Select.extend({
optionLabelPath: 'content.name',
optionValuePath: 'content.id'
})
});

App.Router = Em.Router.extend({

root: Em.Route.extend({

index: Em.Route.extend({
route: '/',
connectOutlets: function(router, context) {
router.get('applicationController').connectOutlet({
name: 'myForm',
context: Ember.Object.create({
persons: [{id:0, name: "Wayne"}, {id: 1, name: "Gart"}]
})
});
}
})
})
});
App.initialize();

关于javascript - Ember.Select 在使用路由器的应用程序中的 contentBinding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11659707/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com