Javascript 将Angular 2应用程序从Windows 10移动到Mac OS X:jQuery
我正在将我的nodejs应用程序开发从windows10转移到Mac上,我对OS-X只略为熟悉,正在摸索着完成。我正在使用npm 3.6.0和webpack构建Angular 2 beta 3静态HTML、Javascript、CSS等,它将调用运行在云中某个单独的nodejs应用程序中的API。其他人负责开发此API 我遇到了一个问题,因为浏览器抱怨在我的一条路径中找不到jQuery库。Chrome中的投诉如下所示: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
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,但我想改变这个应用程序的很多方面,我正在开发一个一次性演示