2013-09-23 2 views
2

, прежде чем я задать свой вопрос у меня есть проблемы с атрибутом связывания и решить проблему с этим link знаю, что мой компонент, как это:несколько атрибутов связывания в Ember компонента

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 .before этого я использую currentItem.isMeasure для связывания в этом компоненте класса и работать правильно, но когда им, используя этот код:

attributeBindings:['data-id','data-isMeasure'], 
'data-id':Ember.computed.oneWay('currentItem.id'), 
'data-isMeasure':Ember.computed.oneWay('currentItem.isMeasure'), 

и уголек создать Lī элемент вроде этого:

<li id="ember745" class="ember-view d_measure" data-id="03lp9" data-ismeasure="data-isMeasure"> 

data-ismeausre должно быть истинным ложного не 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 он возвращает истину, но вставить data-isMeasure вместо true в элементе.

+0

Для вашего второго подхода вы должны указать зависимый ключ. Попробуйте 'property ('currentItem.isMeasure')'. Но я не знаю, помогает ли это в одиночку. – mavilein

+0

no it dosent work – MBehtemam

ответ

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"> 

и знаю, что я могу думать об очистке этого трюка с лучшим кодом.

Смежные вопросы