2012-11-01 40 views
1

我是Ember的入門者,我嘗試在我的應用程序中使用Ember.js(1.0.0.pre)。ember.js如何設置Ember選項的標題。

我想爲我的Ember.Select的options設置標題以顯示鼠標懸停時的提示。 但是,我無法在API中找到有關該選項標題的任何信息。

我是否必須自己寫一個函數來填充"title"屬性? 有沒有什麼辦法像"optionLabelPath"綁定"title"屬性的選項?

回答

2

爲了實現這一目標,我們需要reopenEmber.SelectOption

here是下面的例子

MyApp = Ember.Application.create(); 

Ember.SelectOption.reopen({ 
    attributeBindings: ['title'], 
    title: function() { 
    var titlePath = this.getPath('parentView.optionTitlePath'); 
    return this.getPath(titlePath); 
    }.property('parentView.optionTitlePath') 
}); 

MyApp.selectArray = [{ 
    label: "A", 
    id: "1", 
    title: "for Apple" 
    }, 
    { 
    label: "B", 
    id: "2", 
    title: "for Ball" 
    }]; 

把手

<script type="text/x-handlebars" > 
    {{view Ember.Select 
    contentBinding="MyApp.selectArray" 
    optionLabelPath="content.label" 
    optionValuePath="content.id" 
    optionClassPath="content.title" 
    }} 
</script>​ 

+0

太棒了!有用。我在這裏找到信息。[link](https://github.com/emberjs/ember.js/blob/v1.0.0-pre.2/packages/ember-handlebars/lib/controls/select.js#L480 ) – JackYe

+0

我也是...... ..... :) –

0

下面的小提琴就是我在觀察源文件後得到了e代碼在Ember:

Ember.SelectOption.reopen({ 
    attributeBindings: ['title'], 

    init: function() { 
     this.titlePathDidChange(); 
     this._super(); 
    }, 

    titlePathDidChange: function() { 
     var titlePath = this.get('parentView.optionTitlePath'); 
     if (!titlePath) { return; } 

     Ember.defineProperty(this, 'title', Ember.computed(function() { 
      return this.get(titlePath); 
     }).property(titlePath)); 
    }.observes('parentView.optionTitlePath') 
}); 
相關問題