6

我是 ember 的新手,正在尝试弄清楚如何在选择控件更改时呈现模板。

代码:

    App.LocationTypeController = Ember.ArrayController.extend({

    selectedLocationType: null,

    locationTypeChanged: function() {
        //Render template
    }.observes('selectedLocationType')
});

{{view Ember.Select 
  contentBinding="model"
  selectionBinding="selectedLocationType"
  optionValuePath="content.id"
  optionLabelPath="content.name"}}

当 locationType 更改时,控制器中会触发 locationTypeChanged 函数。但是我如何从那里将一些内容渲染到 dom 中呢?(this.render()?)...

4

2 回答 2

7

是的,您只能使用this.render(),但这里的关键是into其中的选项。

App.LocationTypeController = Ember.ArrayController.extend({

 selectedLocationType: null,

 locationTypeChanged: function() {
    var selectedLocationType = this.get('selectedLocationType');
    this.send('changeTemplate',selectedLocationType);
 }.observes('selectedLocationType')
});

将您的路线中的操作设置为

changeTemplate: function(selection) {
          this.render('template'+selection.id,{into:'locationType'});
 }

{{outlet}}在您locationType的模板中有一个。

{{view Ember.Select 
       contentBinding="model"
       selectionBinding="selectedLocationType"
       optionValuePath="content.id"
       optionLabelPath="content.name"}} 

{{outlet}}

满足您要求的示例JSBin

于 2013-09-06T02:08:11.063 回答
4

如果您只需要显示一个框架,当存在选定的东西时,您可以使用if车把助手:

在您的模板中

...

{{#if selectedLocationType}}
  Any content here will be visible when selectedLocationType has some value
{{/if}}

...

{{view Ember.Select 
  contentBinding="model"
  selectionBinding="selectedLocationType"
  optionValuePath="content.id"
  optionLabelPath="content.name"}}

我希望它有帮助

于 2013-09-06T02:07:04.753 回答