在我问我的问题之前,我对属性绑定有问题,并解决了这个问题link知道我的组件是这样的:
OlapApp.ItemRowsComponent = Ember.Component.extend({
tagName: 'li',
classNameBindings: ['currentItem.isMeasure:d_measure:d_dimension'],
attributeBindings:['data-id'],
'data-id':Ember.computed.oneWay('currentItem.id'),
actions: {
removeItem: function(item) {
item.deleteRecord();
item.save();
},
didClick: function(item) {
if (item.get('isMeasure')) {
item.deleteRecord();
item.save();
}
}
}
});
好的,我知道我想添加另一个与currentItem.isMeasure
绑定的属性。在此之前我使用currentItem.isMeasure
进行此组件中的类绑定并正常工作但是当我使用此代码时:
attributeBindings:['data-id','data-isMeasure'],
'data-id':Ember.computed.oneWay('currentItem.id'),
'data-isMeasure':Ember.computed.oneWay('currentItem.isMeasure'),
和ember创建一个像这样的li元素:
<li id="ember745" class="ember-view d_measure" data-id="03lp9" data-ismeasure="data-isMeasure">
data-ismeausre
必须为false而不是data-isMeasure
。所以我用另一种方式:
attributeBindings:['data-id','io:data-isMeasure'],
'data-id':Ember.computed.oneWay('currentItem.id'),
io:function(){
console.log(this.get('currentItem').get('isMeasure')); //its return true
return this.get('currentItem').get('isMeasure');
}.property(),
但返回的值仍然存在
但是当我在console.log中它返回true但在元素中插入data-isMeasure
而不是true
。
答案 0 :(得分:3)
我用一招来解决了我的问题。在我的应用程序currentItem.isMeasure
中是true
而true
是布尔值,因此ember在元素中插入属性的名称。所以我试试这段代码:
attributeBindings:['data-id','io:data-isMeasure'],
'data-id':Ember.computed.oneWay('currentItem.id'),
io:function(){
var val = this.get('currentItem.isMeasure');
if(val==true)return "true";
return "false";
}.property('currentItem.isMeasure'),
现在每件事都正常工作,我的元素是:
<li id="ember745" class="ember-view d_measure" data-id="acafd" data-ismeasure="true">
并且知道我可以考虑用更好的代码来清理这个技巧。