要使用colorselector插件,应在之后调用colorselector()函数
在浏览器中呈现带有选项的选择。但是,使用ember didInsertElement无效,因为在插入<option>标记之前触发了回调!

我尝试了这个:

App.ColorSelector = Ember.Select.extend({
  _initialize: function() {
    console.log(this.$().find('option').size()); // logs 0
    this.$().colorselector();
  }.on('didInsertElement');
});

App.ColorSelector = Ember.Select.extend({
  _initialize: function() {
    Ember.run.scheduleOnce('afterRender', this, function() {
      console.log(this.$().find('option').size()); // logs 0
      this.$().colorselector();
    });
  }.on('didInsertElement');
});


编辑:
使用@SeanK建议:

App.ColorSelector = Ember.Select.extend({
  didInsertElement: function() {
      console.log(this.$().find('option').size()); // logs 0
      this.$().colorselector();
  }
});


在ember插入带有所有colorselector()标记的<select>后如何运行<option>函数调用?

最佳答案

这对我来说适合Ember 1.7.0

App = Em.Application.create();

App.ApplicationController = Ember.Controller.extend({
    colors: ['blue', 'green']
});

App.ColorSelector = Ember.Select.extend({
  didInsertElement: function() {
    console.log(this.$().find('option').size()); // logs 2
    //this.$().colorselector();
  }
});

Ember.Handlebars.helper('color-selector', App.ColorSelector);


模板:

<script type="text/x-handlebars">
    {{color-selector content=colors}}
</script>

10-06 00:05