Ember.js 余烬组件中的多属性绑定

Ember.js 余烬组件中的多属性绑定,ember.js,ember-data,Ember.js,Ember Data,在我提问之前,我遇到了属性绑定的问题,并解决了这个问题。我知道我的组件是这样的: OlapApp.ItemRowsComponent = Ember.Component.extend({ tagName: 'li', classNameBindings: ['currentItem.isMeasure:d_measure:d_dimension'], attributeBindings:['data-id'], 'data-id':Ember.computed.oneWay('currentIt

在我提问之前,我遇到了属性绑定的问题,并解决了这个问题。我知道我的组件是这样的:

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();
        }
    }
}
});
<li id="ember745" class="ember-view d_measure" data-id="03lp9" data-ismeasure="data-isMeasure">
好的,我知道我想添加另一个与
currentItem.isMeasure
绑定的属性。在此之前,我使用
currentItem.isMeasure
进行此组件中的类绑定,并且工作正常,但是当我使用此代码时:

attributeBindings:['data-id','data-isMeasure'],
'data-id':Ember.computed.oneWay('currentItem.id'),
'data-isMeasure':Ember.computed.oneWay('currentItem.isMeasure'),
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元素,如下所示:

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();
        }
    }
}
});
<li id="ember745" class="ember-view d_measure" data-id="03lp9" data-ismeasure="data-isMeasure">
但返回的值仍然存在


但是当im console.log返回true时,它会在元素中插入
数据isMeasure
而不是
true

我用一个技巧解决了我的问题。在我的应用程序中,
currentItem.isMeasure
true
,并且
true
是布尔值,因此需要在元素中插入属性的名称。因此,我尝试以下代码:

attributeBindings:['data-id','data-isMeasure'],
'data-id':Ember.computed.oneWay('currentItem.id'),
'data-isMeasure':Ember.computed.oneWay('currentItem.isMeasure'),
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">

  • 我知道我可以考虑用更好的代码来清除这个技巧。

    对于第二种方法,您应该指定一个依赖键。尝试
    属性('currentItem.isMeasure')
    。但我不知道这是否有帮助。