1

Я использую магистраль с шаблонами рулей на интерфейсе вместе с MDL.Зарегистрировать компоненты MDL

Например, я хочу интегрировать раскрывающееся меню демонстрации. Поскольку он будет загружен в более поздний момент (а не на загрузку страницы), выпадающий список не работает.

<button id="demo-menu-lower-right" 
     class="mdl-button mdl-js-button mdl-button--icon"> 
     <i class="material-icons">more_vert</i> 
</button> 

<ul class="mdl-menu mdl-menu--bottom-right mdl-js-menu mdl-js-ripple-effect" 
    for="demo-menu-lower-right"> 
     <li class="mdl-menu__item">Some Action</li> 
     <li class="mdl-menu__item">Another Action</li> 
     <li disabled class="mdl-menu__item">Disabled Action</li> 
     <li class="mdl-menu__item">Yet Another Action</li> 
</ul> 

По getting started мне нужно зарегистрировать компоненты, если они являются динамическими.

мой взгляд позвоночник выглядит следующим образом

(function() { 
'use strict'; 
var $ = require('jquery'), 
    hbs = require('handlebars'), 
    Backbone = require('backbone'); 

var menuTPL = require('nav/navigation-links.hbs'); 

module.exports = Backbone.View.extend({ 
    el: $('.mdl-navigation'), 
    initialize: function() { 
     this.render(); 
     this.listenTo(this.model, 'change', this.render); 
    }, 
    render: function() { 
     var template = menuTPL({user: this.model.toJSON()}); 
     this.$el.html(template); 
    }, 
}); 
})(); 

Теперь, где именно я должен зарегистрировать этот компонент и то, что было бы разумно подходить к этому, так что я не должен писать тот же код снова и снова, чтобы зарегистрировать новый потому что почти все страницы шаблоны? Правила CSS применяются в c, это просто javascript, не работающий над этими компонентами.

Я немного потерялся, где даже начать здесь, поэтому любое предложение или ответ приветствуются.

До сих пор я выяснил, что могу позвонить componentHandler.upgradeAllRegistered();, и все они будут зарегистрированы и будут работать исправно. Я мог бы подключить это событие после рендеринга, но не уверен в производительности этого. Насколько я понимаю, это будет проходить через весь DOM.

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

Следующим шагом будет просмотр, могу ли я ограничить upgradeAllRegistered определенной областью (эл от магистрали), поэтому я могу ориентировать только части страницы, которые меняются в представлении.

ответ

2

Try ...

componentHandler.upgradeElements (RootElement);

По крайней мере, это работает для меня после добавления элементов в диалоговое окно.