2015-10-29 3 views
1

Нокаут дает вам два способа создания экземпляра компонента либо с помощью пользовательского элемента html, либо с привязкой к компоненту.KnockoutJs Components - добавить класс по умолчанию

Однако я обнаружил небольшую проблему при попытке стирать элемент корневого компонента. Это нормально, если вы просто используете синтаксис пользовательского элемента, поскольку вы можете просто назначить ему стили CSS, однако, если вы затем используете привязку к компоненту, правила css не совпадают, и поэтому они терпят неудачу.

В идеале я хочу поддерживать оба сценария, поскольку они оба используют их. Если бы я мог получить нокаут, чтобы добавить класс к элементу корневого компонента, который является только именем компонента, это решит проблему, но, читая документацию, неясно, где было бы лучше сделать это.

У меня уже есть пользовательский загрузчик шаблонов, который извлекает шаблон из вызова ajax, но этот шаблон является только внутренним html корневого узла.

В основном я хочу это:

<my-custom-element> 
... 
... 
<my-custom-element> 

Чтобы стать этим:

<my-custom-element class="my-custom-element"> 
... 
... 
<my-custom-element> 

Кто есть какие-нибудь идеи?

ответ

1

Вы можете использовать метод и доступа к элементу «createViewModel» в компоненте (например, чтобы добавить некоторый класс):

ko.components.register('some-component', { 
    viewModel: { 
     createViewModel: function(params, componentInfo) { 
      var $element = $(componentInfo.element.children[0]); 
      // some other code ... 
     } 
    }, 
    template: "<div></div>" 
}); 
+0

Yep, что будет делать трюк, спасибо. – Marlon

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