javascript - 注册MDL组件

标签 javascript backbone.js handlebars.js material-design-lite

我在前端使用带有 Handlebars 模板的主干以及 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如果组件是动态的,我需要注册它们。

我的主干 View 看起来像这样

(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规则适用于ofc,只是javascript不适用于这些组件。

我有点迷失从哪里开始,所以欢迎任何建议或答案。

到目前为止,我已经发现我可以调用 componentHandler.upgradeAllRegistered(); 并且所有这些都将被注册并正常工作。我可以在渲染后将其连接到事件上,但不确定其性能。据我了解,这将遍历整个 DOM。

此外,我想避免逐一注册或作为数组注册,因为这很容易出错并且维护噩梦。

我的下一步将是看看是否可以将 upgradeAllRegistered 限制为特定范围(来自主干的 el),以便我只能定位页面中正在被 View 更改的部分。

最佳答案

尝试...

componentHandler.upgradeElements(rootElement);

至少在我向对话框添加元素后这对我有用。

关于javascript - 注册MDL组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35159849/

相关文章:

javascript - 如何在 javascript 中对数组进行排序而不修改它?

javascript - Webpack 在没有 jQuery 的情况下无法加载主干

node.js - Ghost 按标签过滤帖子 = slug 名称

javascript - 主干模型和 Ajax 调用

javascript - Backbone - 无论如何检查一个事件之前是否已经绑定(bind)?

jquery - 更新 Ember 嵌套模型和模板

ember.js - 如何将多个内容生成到 ember.js 组件模板中?

javascript - 在blade中定义vuejs组件

Javascript - 从数组中删除元素/对数组中高于特定值的元素求和

Javascript 加速?