假设我在视图上有一个计算属性:
TestView=Ember.View.extend({
computedProperty:function(){
return this.get("elementId")+"test"
}.property("targetObject.{{elementId goes here}}")
})
我想让属性依赖于model属性,其属性名称等于该view元素的id。但是,我还没有找到一种优雅的方法来做到这一点。我需要这样做才能使我的代码尽可能通用。到目前为止,我的解决方案是使属性依赖于targetObject的id,然后在需要绑定更新时调用object.notifyPropertyChange(id)。
增加一些清晰度。假设我有一个视图,显示绑定到模型上的属性的数字。但是,我希望在显示时用逗号格式化数字。我可以轻松地为每个可能进行格式化的属性编写一个计算属性。相反,我只想要一个通用视图,它将知道采用与视图的elementId属性同名的模型属性的值。这是我的hacky解决方案的一个例子:
TestView=Ember.View.extend({
computedProperty:function(){
var id=this.get("elementId")
return addCommas(this.get("targetObject").get(id))
}.property("id")
})
然后我打电话给:
object.notifyPropertyChange(id)只要模型上的某个属性发生更改。它有效并实现了我的目标,但我一直在寻找更优雅的解决方案。
在视图中,格式化的值显示在自定义文本字段中。
{{view App.CustomTextField value=computedProperty id="someAttribute}}
答案 0 :(得分:0)
只需使用一个帮助器,用逗号分隔数字。您不需要任何属性,计算或其他。
<强> test.hbs 强>
Hello, I am a formatted {{add-commas number}}.
<强>助手/附加commas.js 强>
Ember.Handlebars.helper('add-commas', function(value) {
return value.toLocaleString();
});