Material Design life与AngularJS的集成
Material Design Lite Integration with AngularJS
我知道Angular Material可以帮助实现在Angular单页应用中使用的材质设计规范。
然而,我正在考虑将Material Design Lite替代方案集成到我的Angular项目中。我想知道集成Material Design Lite和AngularJS应用程序的最佳方法。
Emjay的第二个答案对我很管用。你还可以通过把upgradeAllRegistered
方法扔进Angular的run
块来减少样板文件:
angular.module('app', [])
.run(function ($rootScope,$timeout) {
$rootScope.$on('$viewContentLoaded', ()=> {
$timeout(() => {
componentHandler.upgradeAllRegistered();
})
})
});
免责声明:我是这个项目的作者
你可以在angular应用中使用Material Design Lite
。
我相信你正在寻找一个有棱角的包装上的材料设计生活。
这个包正在大量开发中,它已经实现了一些带有可配置选项(浮动文本字段)的指令http://jadjoubran.github.io/angular-material-design-lite/
如果你想用angular编写一个完整的UI,你可以使用angular Material
我有这个问题渲染,更多的设计元素动态使用javascript CDM(如菜单),它没有正确渲染。我创建了一个运行componentHandler的解决方案。upgradeDom()只在添加新元素时使用:
var app = angular.module('app');
app.run(function () {
var mdlUpgradeDom = false;
setInterval(function() {
if (mdlUpgradeDom) {
componentHandler.upgradeDom();
mdlUpgradeDom = false;
}
}, 200);
var observer = new MutationObserver(function () {
mdlUpgradeDom = true;
});
observer.observe(document.body, {
childList: true,
subtree: true
});
/* support <= IE 10
angular.element(document).bind('DOMNodeInserted', function(e) {
mdlUpgradeDom = true;
});
*/
});
问题解决了!
你可以像Material Design Lite网站上的指示一样包含。css和。js文件,然后在引导应用程序或加载控制器时执行以下操作。
angular.element(document).ready(
function() {
componentHandler.upgradeAllRegistered();
});
或
$scope.$on('$viewContentLoaded', () => {
$timeout(() => {
componentHandler.upgradeAllRegistered();
})
});
有一种不那么暴力的方式来升级元素:不需要检查间隔或在发生变化时升级整个DOM。MutationObserver已经告诉你改变了什么
window.addEventListener('load', function() {
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function( mutation ) {
if (mutation.addedNodes)
window.componentHandler.upgradeElements(mutation.addedNodes);
})
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
- 将外部文件与AngularJs集成
- Fastclick.js与AngularJS的集成
- 以这种方式将谷歌图表与AngularJS集成可靠吗
- 如何在 AngularJS 中集成两个模块
- 问题-将angularjs与socket.io集成
- 如何在 angularjs 中集成高图表范围滑块
- 围绕Angularjs存在哪些工具/项目/集成
- 集成 AngularJS + 传单
- 将 ECMAScript-6 集成到现有的 AngularJS 项目中
- 使用单个文件集成整个Yeoman,AngularJS项目
- 如何对(Angularjs)Web应用程序进行集成测试
- 带有 angularJS 集成的条带
- AngularJS:使用ng repeat与外部插件集成指令的问题
- AngularJS和Node.js与ExpressJS集成
- 无法在我的angularjs项目中集成angular编年史
- AngularJS与D3.js的集成
- AngularJS-SOAP服务与AngularJS模型的集成
- 将angularjs与nodeapi集成
- 如何在Joomla内部集成AngularJs应用程序
- 集成AngularJS和JSP页面