2013-09-23 2 views
6

я есть компонент, как это и хотят, чтобы установить некоторые атрибуты на нем:Добавление атрибутов к компоненту Emberjs

OlapApp.ItemRowsComponent = Ember.Component.extend({ 
tagName: 'li', 
classNameBindings: ['currentItem.isMeasure:d_measure:d_dimension'], 
didInsertElement: function() { 
    this.$().draggable({ 

    }); 
}, 
actions: { 
    removeItem: function(item) { 
     item.deleteRecord(); 
     item.save(); 
    }, 
    didClick: function(item) { 
     if (item.get('isMeasure')) { 
      item.deleteRecord(); 
      item.save(); 
     } 
    } 
} 
}); 

и я называю этот компонент, как это:

{{#each item in getRowItem}} 
{{item-rows currentItem=item}} 
{{/each}} 

элемент имеет свойство ID item.id теперь я хочу установить этот идентификатор для идентификатора данных компонента, чтобы создать такой элемент:

<li data-id='id of item'>Some text</li> 

ответ

2

после поиска и попытки каким-то образом я нахожу это. im используя это для решения моей проблемы:

attributeBindings:['getId:data-id'], 
getId:function(){return this.get('currentItem.id')}.property(), 
+0

Ваше обозначение атрибутаBindings напоминает обозначения для классаNameBindings. И я уверен, что этот фрагмент не должен делать то, что вы ищете. – mavilein

+2

в соответствии с [настроить вид] (http://emberjs.com/guides/views/customizing-a-views-element/#toc_attribute-bindings-on-a-view) Я думаю, что это правильно – MBehtemam

+0

Я только что просмотрел документация Ember.View и не видел его там. Спасибо. Узнал что-то еще :-). Таким образом, мои единственные предложения по улучшению - это вычисленное сокращение свойств для большей удобочитаемости (и небольшая ошибка, которую ваш не будет обновлять при изменении идентификатора) :-) – mavilein

5

Ваш подход на самом деле работает? Я подозреваю, что он не должен работать таким образом, и должны быть достаточно:

OlapApp.ItemRowsComponent = Ember.Component.extend({ 
    attributeBindings:["data-id"], 
    "data-id" : Ember.computed.oneWay("currentItem.id") 
    // and the rest of your code ... 
}); 

Одно небольшое дополнительное замечание: Checkout мой пост в блоге о том, как выполнить Jquery логику правильно: http://mavilein.github.io/javascript/2013/08/01/Ember-JS-After-Render-Event/

+0

Я пытаюсь использовать ваш путь, но я получаю сообщение об ошибке 'Uncaught SyntaxError: Неожиданный токен - 'и эта ошибка возникает в' data-id' – MBehtemam

+1

О 'data-id' недействительный ключ. Можете ли вы попытаться поместить его в кавычки '' data-id? '? – mavilein

+0

благодарит за работу с кавычками – MBehtemam

3

Вы можете на самом деле сделайте это без введения дополнительного вычислимого свойства.

attributeBindings:['currentItem.id:data-id'] 
Смежные вопросы