提问者:小点点

Ember TextField中的绑定计算属性


我正在尝试将我的数据模型绑定到Ember. js中的文本字段。该模型有一个表示货币值(例如,1,000.50美元)的字段。然后用户可以更改此值。

Ember以数字(1000.50)的形式接收数据——不是货币格式。我将视图绑定到具有良好格式的计算属性。这是我的句柄模板。

{{input classNames="amount" valueBinding="p.amountFmt"}}</td>

我的模型看起来像:

App.Product = Ember.Object.extend({
  amount : 0.00,
  amountFmt: function () {
    //example. Do actual formatting with this.get('amount'); 
    var formattedNum = '1,000.50'; 
    return formattedNum;
  }.property('amount')
});

问题是,当用户更改输入字段中的金额时,我模型上的底层“金额”属性不会更新——我想是因为它绑定到计算属性。

获取用户的输入,必要时进行解析和验证,并将其存储在“金额”属性中的正确方法是什么?我应该在两个属性之间使用绑定/观察者吗?这将如何工作?

最终,“金额”属性是get的持久化服务器端。我真的只是认为计算属性是进行UI格式化的地方。我通常会使用Handlebar助手进行这种格式化,但您不能将TextField的value eBind与Handlebar助手的结果结合起来。

先谢谢你的帮助!安德鲁


共1个答案

匿名用户

根据上下文的不同,计算属性的函数既充当getter又充当setter。它的签名是umtFmt(key,[value])。该值是可选的,仅在要更改值时传入。

amountFmt: function(key, value) {
  if (value) {
    // setter
  } else {
    // getter
  }
}.property('amount')