Squ*_*pes 6 jquery materialize angular
用angular-cli创建了一个角度4项目.在angular-cli.json文件中导入css和js.
"styles": [
"../node_modules/materialize-css/dist/css/materialize.css",
"styles.css"
],
"scripts": [
"../node_modules/jquery/dist/jquery.js",
"../node_modules/hammerjs/hammer.js",
"../node_modules/materialize-css/dist/js/materialize.js",
"../src/assets/js/init.js"
],
Run Code Online (Sandbox Code Playgroud)
init.js具有以下功能
(function($) {
$(function() {
$('.slider').slider();
$('.button-collapse').sideNav();
$('.carousel').carousel();
// $('.carousel.carousel-slider').carousel({fullWidth: true});
$('.carousel').carousel({
dist: 0,
shift: 0,
padding: 20,
});
}); // end of document ready
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
在app.module.ts中导入MaterializeModule从'angular2-materialize'导入{MaterializeModule};
当我们第一次登陆页面或刷新时,滑块按预期工作.
问题:当我们使用router-link导航时,页面导航正确但javascript函数没有被调用.
从主页路由 <a routerLink="/blog/abc-1">Blog</a>
我试过:`blog.component.ts
import { Component, OnInit } from '@angular/core';
import { MaterializeModule } from 'angular2-materialize';
import * as $ from 'jquery';
import * as Materialize from 'materialize-css';
declare let Materialize : any;
@Component({
selector: 'app-blog',
templateUrl: './blog.component.html',
styleUrls: ['./blog.component.css']
})
export class BlogComponent implements OnInit {
constructor() { }
ngOnInit() {
Materialize('.slider').slider();
}
}
Run Code Online (Sandbox Code Playgroud)
`错误:获取错误:ERROR TypeError:a.addEventListener不是函数
at http://localhost:4200/vendor.bundle.js:15611:765
at Array.forEach (native)
Run Code Online (Sandbox Code Playgroud)
经过大量迭代后解决了这个问题.解决方案:如果要在angular-cli.json中导入js,则无需再在组件中导入相同的内容.重复的结果,你会得到奇怪的javascript异常,这将导致误导.只需声明它们并像下面的代码一样使用它.
declare let $ : any;
Run Code Online (Sandbox Code Playgroud)
另外在Onngint(){}方法中再次调用javascript函数.必须在将使用此功能的每个组件中调用此方法.示例如下:
ngOnInit() {
$(function(){
$('.button-collapse').sideNav();
}); // end of document ready
}
Run Code Online (Sandbox Code Playgroud)
记得检查文件准备好了.不检查导致脚本的早期执行.
| 归档时间: |
|
| 查看次数: |
1519 次 |
| 最近记录: |