2014-09-04 2 views
0

Мне поручили переписывать веб-сайт в приложение Ember. До сих пор так хорошо, я понимаю основы маршрутизации Ember, модели, контроллеры и т. Д. Теперь я все больше вишу на деталях. Прямо сейчас у меня возникают проблемы с внедрением Ember-представлений и привязки атрибутов. У меня есть элемент вроде этого:Рестайлинг веб-сайта в Ember

<a class="someClass" href="http://example.com" data-imgone="public/images/firstimg.jpg" data-imgtwo="public/images/secondimg.jpg" data-title="someTitle" data-description="someDescription"> 
    <div> 
     <!-- some stuff --> 
    </div> 
</a> 

Как я понял это (скорее всего, неправильно, хотя лол) я должен создать этот элемент, как вид в моем сценарии:

App.MyView = Ember.View.extend({ 
    tagName: 'a', 
    attributeBindings: ['href', 'data-imgone', 'data-imgtwo', 'data-title', 'data-description'], 
    href: 'http://example.com', 
    'data-imgone': "public/images/firstimg.jpg", 
    'data-imgtwo': "public/images/secondimg.jpg", 
    data-title="someTitle", 
    data-description="someDescription" 
}); 

Тогда я должен позвонить myView с помощником вида:

{{#view 'App.MyView}} 
    <div> 
     <!-- some stuff --> 
    </div> 
{{/view}} 

Это не работает, элементы не отображаются. Пожалуйста, скажите мне, что я делаю неправильно. Я полностью неправильно понял точку зрения и привязку атрибутов? Также, пожалуйста, если у кого-нибудь есть советы/стратегии для заданий, таких как мои, пожалуйста, поделитесь ими!

ответ

1

Вам не нужна ни одна кавычка, чтобы указать, какой вид вы просматриваете. Этого должно быть достаточно:

{{#view App.SomeView}}Link Text{{/view}} 

Вам также не нужны кавычки для объявления атрибутов данных в вашем классе. Атрибуты данных могут быть отображены следующим образом:

App.SomeView = Em.View.extend({ 

    tagName: 'a', 
    attributeBindings: ['href', 'dataImgone:data-imgone'], 

    href: 'http://emberjs.com', 
    dataImgone: "public/images/firstimg.jpg", 
}); 

(см jsbin)

Обратите внимание, что в attributeBindings, я передаю функцию/свойство, которое питает атрибут с последующим :attributename, который в данном случае является data-imgone, as ['dataImgone:data-imgone'].

+0

Благодарим за быстрый ответ! – mcabe

+0

Просто один последний комментарий, попробуйте использовать компоненты вместо представлений, когда это возможно – MilkyWayJoe

+0

Итак, если я понимаю http://discuss.emberjs.com/t/whats-the-difference-between-ember-helpers-components-and-views/ 2201: взгляды больше не нужны? – mcabe

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