2016-04-29 28 views
1

我在我的hbs文件中有一个select-2标签,其中填充了服务调用的结果。该服务以全部大写字母返回结果,我必须更改为骆驼案例。 以前我使用简单的选择html标签,因此可以使用uc-words helper来实现这一点。在select2标签中的uc-words

<select onchange={{action "doSomething" value="target.value"}}> 
     <option value="">Any</option> 
     {{#each fruits as |fruit|}} 
       <option value={{fruit.id}}>{{uc-words fruit.value force=true}}</option> 
     {{/each}} 
    </select> 

现在就改变选择-2 HBS标签

{{select-2 
     content=fruits 
     optionLabelPath="value" searchEnabled=false 
     optionValuePath="id" 
     value=selectedFruit 
     placeholder="Any" 
     allowclear=true 
    }} 

我是否有办法来改变这种骆驼情况呢?

也可以有一个空的选项,而不修改结果?

+0

如果可能的话把它传递给选择-2之前修改水果。它会工作 – murli2308

回答

0

根据您的时间范围以及您想要的解决方案的优雅程度,您有几个选择。

如果快速完成工作就是您想要的,只需查看uc-words helper source,然后将该功能复制到utils目录。

然后在您的服务中,在填充适当的属性之前,只需将上述链接的功能转换为一组水果值即可。

功能,复制和调整你的使用情况:

// utils/helpers.js 
export function ucWords(word, options) { 
    var string = String(word), 
    force = (options.force === true) ? true : false; 

    if(force) { 
    string = string.toLowerCase(); 
    } 

    return string.replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g, function($1) { 
    return $1.toUpperCase(); 
    }); 
} 

// services/populate.js 
//.. 
import { ucWords } from 'utils/helpers.js' 

export default Service.extend({ 

    fruitStore: service(), 

    upperCaseFruit: Ember.computed('fruitStore.fruits', function(){ 
    return this.get('fruitStore.fruits').map(fruit => { 
     fruit.value = ucWords(fruit.value); 
     return fruit; 
    }); 
    }) 

}) 
+0

我可以有一个空的选项,而不修改结果?它可以在标签本身处理吗? – sree

+0

感谢您的回答。我想知道是否有直接的方式使用该选择2标签的助手 – sree