我正在開發一個Ember應用程序,它在輸入字段中接受用戶輸入並以美國貨幣格式化,然後向用戶顯示格式化值。如何以編程方式更新餘燼輸入字段
的模板是:
<script type="text/x-handlebars" id="index">
{{input value=savings id="userSavings"}}
<p>Formatted Savings={{formattedSavings}}</p>
</script>
的控制器是:
App.IndexController = Ember.Controller.extend({
savings:null,
formattedSavings:function(){
return formatMoney(this.get('savings'));
}.property('savings'),
onSavingsChange:function(){
newValue=formatMoney(this.savings);
console.log("formatted value="+newValue);
//this.savings=newValue;
//$("#userSavings").val(newValue);
}.observes('savings'),
})
的formatMoney函數是:
function formatMoney(inputNumber)
{
try {
inputNumber = Math.round(inputNumber);
var n = inputNumber.toString().split(".");
n[0] = n[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return "$" + n.join(".");
}
catch(e) {
console.error("Error="+e);
}
}
我希望輸入字段中的值在用戶輸入數字後保持美國貨幣格式。但沒有發生。 輸入字段的值綁定到變量儲蓄的索引控制器。當我得到格式化的值newValue,我想在輸入字段中反映這一點。
我都嘗試灰燼方式this.savings = NEWVALUE和jQuery的方式$( 「#userSavings」)VAL(NEWVALUE)。但都不起作用。我可以看到格式爲的輸出變量變量,但它不反映在輸入字段上。
當我在中實現它時,只有jQuery(獨立jQuery應用程序),它的工作原理。但是當Ember進入畫面時,它不起作用。
如何解決這個問題?
什麼是ember版本? – miguelcobain
我使用Ember 1.6.1和jQuery 1.11。由於某些原因,我無法升級到較新版本的Ember。 –
你可以做'this.set('savings',newValue)'。爲什麼這麼複雜。只需使用CP,而不是觀察者,然後在set()中進行格式化。 – Lux