Emberアプリケーションを開発して、入力フィールドでユーザー入力を受け取り、それをアメリカの通貨でフォーマットし、ユーザーにフォーマットされた値を表示します。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);
}
}
ユーザーが数字を入力した後、入力フィールドの値をアメリカの通貨形式にしておきます。しかし、それは起こっていない。 入力フィールドの値は、変数節約indexControllerにバインドされています。フォーマットされた値newValueが得られたら、これを入力フィールドに反映したいと思います。
私は道this.savings = newValueにとjQueryウェイ$( "#のuserSavings")のval(newValueに)両方エンバーを試してみました。でも動作しません。 formattedSavingsの出力を見ることができますが、入力フィールドには反映されません。
に実装すると、jQueryのみ(スタンドアロンのjQueryアプリケーション)で動作します。しかし、Emberが絵になると、動作しません。
この問題を解決するにはどうすればよいですか?
どのようなバージョンですか? – miguelcobain
Ember 1.6.1とjQuery 1.11を使用しています。何らかの理由でEmberの新しいバージョンにアップグレードできません。 –
あなたは 'this.set( 'savings'、newValue)'を実行できます。なぜそんなに複雑になるのか。オブザーバーではなく、CPを使用して、set()でフォーマットを行います。 – Lux