在Angular 2的jQuery函数中设置访问变量

时间:2016-03-09 06:32:06

标签: javascript jquery typescript angular

我必须在Angular 2应用程序中做一个变通方法并初始化jQuery datetimepicker(以后应该重新编写)。

当我将datetime值分配给变量时,它在Angular app中的任何其他位置都不可见。这是我的工作:

datetime: string;

setDT() {
  jQuery(this.elementRef.nativeElement).find("#datetimepicker").datetimepicker({
    onChangeDateTime: function(currentDateTime) {
      this.datetime = currentDateTime;
      console.log(this.datetime); // -> logs correct selected datetime, i.e. Fri Mar 11 2016 10:00:00 GMT+0200 (EET)
    }
  });
}

但如果我试图在其他地方找到this.datetime,那么它是未定义的:

save() {
  console.log(this.datetime); // -> 'undefined'
}

如何在jQuery和Angular 2之间传递变量?

罗马

2 个答案:

答案 0 :(得分:3)

您需要使用jquery代理来执行此操作:

setDT() {
  jQuery(this.elementRef.nativeElement).find("#datetimepicker").datetimepicker({
    onChangeDateTime: jQuery.proxy(function(currentDateTime) {
      this.datetime = currentDateTime;
      console.log(this.datetime); // -> logs correct selected datetime, i.e. Fri Mar 11 2016 10:00:00 GMT+0200 (EET)
    }, this)
  });
}

答案 1 :(得分:0)

显然,我能够通过

获得所需的价值
public final static boolean isValidEmail(CharSequence target) {
    return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

但出于教育原因仍然很乐意接受答案。

再次感谢!