Javascript 将Angular 2应用程序从Windows 10移动到Mac OS X:jQuery

Javascript 将Angular 2应用程序从Windows 10移动到Mac OS X:jQuery,javascript,jquery,node.js,angular,webpack,Javascript,Jquery,Node.js,Angular,Webpack,我正在将我的nodejs应用程序开发从windows10转移到Mac上,我对OS-X只略为熟悉,正在摸索着完成。我正在使用npm 3.6.0和webpack构建Angular 2 beta 3静态HTML、Javascript、CSS等,它将调用运行在云中某个单独的nodejs应用程序中的API。其他人负责开发此API 我遇到了一个问题,因为浏览器抱怨在我的一条路径中找不到jQuery库。Chrome中的投诉如下所示: ORIGINAL EXCEPTION: ReferenceError: jQ

我正在将我的nodejs应用程序开发从windows10转移到Mac上,我对OS-X只略为熟悉,正在摸索着完成。我正在使用npm 3.6.0和webpack构建Angular 2 beta 3静态HTML、Javascript、CSS等,它将调用运行在云中某个单独的nodejs应用程序中的API。其他人负责开发此API

我遇到了一个问题,因为浏览器抱怨在我的一条路径中找不到jQuery库。Chrome中的投诉如下所示:

ORIGINAL EXCEPTION: ReferenceError: jQuery is not defined
import { Component, AfterViewInit, ViewChild } from 'angular2/core';
import { ControlGroup, FormBuilder, AbstractControl, Validators } from 'angular2/common';
import { RouterOutlet, RouterLink, RouteConfig, Router, ROUTER_DIRECTIVES } from 'angular2/router';

declare var jQuery: any;

@Component({
selector: 'signin',
directives: [RouterOutlet, RouterLink],
styles: [require('../../../sass/signin.scss').toString()],
template: require('./signin.component.html')
})
export class SignInComponent implements AfterViewInit {
    @ViewChild('rememberMeElement') rememberMeElement;

    signinForm: ControlGroup;
    emailOrUsername: AbstractControl;
    password: AbstractControl;
    rememberMe: AbstractControl;

    constructor(fb: FormBuilder) {
        require('jquery');
        require('../../../js/jquery.icheck.min.js');
        require('../../../css/checkbox/orange.css');

        this.signinForm = fb.group({
            "emailOrUsername": ["", Validators.required], 
            "password": ["", Validators.required],
            "rememberMe": ["", Validators.required]
            }
        );

        this.emailOrUsername = this.signinForm.controls['emailOrUsername'];
        this.password = this.signinForm.controls['password'];
        this.rememberMe = this.signinForm.controls['rememberMe'];
    }

    ngAfterViewInit() {
        // nasty legacy stuff
        jQuery(this.rememberMeElement.nativeElement).iCheck({
            checkboxClass: 'icheckbox_minimal-orange',
            radioClass: 'iradio_minimal-orange',
            increaseArea: '20%'
        });    
    }
}
路线的代码如下所示:

ORIGINAL EXCEPTION: ReferenceError: jQuery is not defined
import { Component, AfterViewInit, ViewChild } from 'angular2/core';
import { ControlGroup, FormBuilder, AbstractControl, Validators } from 'angular2/common';
import { RouterOutlet, RouterLink, RouteConfig, Router, ROUTER_DIRECTIVES } from 'angular2/router';

declare var jQuery: any;

@Component({
selector: 'signin',
directives: [RouterOutlet, RouterLink],
styles: [require('../../../sass/signin.scss').toString()],
template: require('./signin.component.html')
})
export class SignInComponent implements AfterViewInit {
    @ViewChild('rememberMeElement') rememberMeElement;

    signinForm: ControlGroup;
    emailOrUsername: AbstractControl;
    password: AbstractControl;
    rememberMe: AbstractControl;

    constructor(fb: FormBuilder) {
        require('jquery');
        require('../../../js/jquery.icheck.min.js');
        require('../../../css/checkbox/orange.css');

        this.signinForm = fb.group({
            "emailOrUsername": ["", Validators.required], 
            "password": ["", Validators.required],
            "rememberMe": ["", Validators.required]
            }
        );

        this.emailOrUsername = this.signinForm.controls['emailOrUsername'];
        this.password = this.signinForm.controls['password'];
        this.rememberMe = this.signinForm.controls['rememberMe'];
    }

    ngAfterViewInit() {
        // nasty legacy stuff
        jQuery(this.rememberMeElement.nativeElement).iCheck({
            checkboxClass: 'icheckbox_minimal-orange',
            radioClass: 'iradio_minimal-orange',
            increaseArea: '20%'
        });    
    }
}
我曾尝试在类声明之外要求jQuery——事实上,我最初就是这样做的——但这对错误没有影响。我从一个运行在Windows上的应用程序中提取了这个signin router代码


有人能告诉我如何需要jQuery才能让它工作吗?我可能会尝试使用jQuery,比如
jQuery=require('jQuery')
,看看它是如何工作的,但由于某种原因,我的Mac电脑正在尝试重新启动,我不想丢失这篇文章

创建一个属性指令不是更好吗?您可以在这里访问
rememberMeElement.nativeElement
并调用iCheck?然后,您可以在任何地方使用它,并在ngOnInit()函数中调用jQuery。与答案无关,只是好奇可能是Denko,但我想改变这个应用程序的很多方面,我正在开发一个一次性演示