0

我有一个简单的结构,其中包含Ember.Select一些预定义的字符串,并Ember.TextField在它旁边:

{{view Ember.Select
    prompt="Choose..."
    contentBinding="predefinedLabels"
    optionValuePath="content.value"
    optionLabelPath="content.label"
}}
{{view Ember.TextField  valueBinding='view.newLabel' action='saveNewLabel'}}

我需要在选择更改时获取它的当前值(如果没有提示)并将其设置为TextField然后将选择重置为提示状态 - 听起来微不足道,但我不知道该怎么做:(我尝试使用selectionBinding但问题是这些集合 Select+ TextField 是动态创建的。使用通用 jQuery,我会通过将通用change侦听器添加到select具有某些指定类的所有标签来做到这一点,Ember 中的类似行为等效于什么?(或者什么是正确的方法来做什么?我需要?

4

2 回答 2

1

您仍然可以使用 jQuery 做到这一点。只需将相关代码(附加change侦听器)放入didInsertElement 当前视图的方法中即可。

看到这个工作 jsFiddle

App.ApplicationView = Ember.View.extend({
    didInsertElement: function() {
        var self = this;
        this.$('select').change(function() {
            self.$('input').val(self.$('option:selected').text());
            self.$("option:selected").removeAttr("selected");
        });
    }
});
于 2013-09-19T18:39:26.257 回答
1

我对你的理解正确吗?

这是您正在寻找的行为吗:http: //jsbin.com/aqaYEgo/3/edit

基本上:

App.ApplicationController = Ember.ObjectController.extend({
  selectedLabel: null,
  actions: {
    saveNewLabel: function() {
      console.log('Saving label: ' + this.get('selectedLabel.value'));
    }
  }
});

{{view Ember.Select
  prompt="Choose..."
  contentBinding="model"
  optionValuePath="content.value"
  optionLabelPath="content.label"
  selectionBinding="selectedLabel"
}}
{{view Ember.TextField  valueBinding="controller.selectedLabel.value" action='saveNewLabel'}}

希望能帮助到你。

于 2013-09-19T18:46:08.560 回答