Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从jQuery调用Angular方法_Jquery_Angular - Fatal编程技术网

如何从jQuery调用Angular方法

如何从jQuery调用Angular方法,jquery,angular,Jquery,Angular,这个问题和那个问题相似 但我认为我的例子有点不同 在Angular项目中,我有一个按钮: <button id="button1" #tbName title="tbName" class="btn btn-lg btn-outline-primary" (click)="open(content,tbName.title)">Launch demo modal</button> 直接调用open(content,title)angular方法的jQuery函数应该是什

这个问题和那个问题相似

但我认为我的例子有点不同

Angular
项目中,我有一个按钮:

<button id="button1" #tbName title="tbName" class="btn btn-lg btn-outline-primary" (click)="open(content,tbName.title)">Launch demo modal</button>
直接调用
open(content,title)
angular方法的jQuery函数应该是什么样子?

我强烈建议您学习使用angular(&w/o jQuery),而不是将两者混合使用。 现在我们在SOF上,你问了些问题。你的代码有很多错误,但嘿,那不是我的项目,所以我只回答

如果要使用JQuery访问角度函数,请将其绑定到窗口,如下所示

ngOnInit() {
  window['MyComponent']['open'] = this.open.bind(this);
}
现在在JQuery中,您可以使用

$(...).click(function() {
  window.MyComponent.open('content of the modal', 'title of the modal');
});
我强烈建议您学习使用Angular(&w/o JQuery),而不是将两者混合使用。 现在我们在SOF上,你问了些问题。你的代码有很多错误,但嘿,那不是我的项目,所以我只回答

如果要使用JQuery访问角度函数,请将其绑定到窗口,如下所示

ngOnInit() {
  window['MyComponent']['open'] = this.open.bind(this);
}
现在在JQuery中,您可以使用

$(...).click(function() {
  window.MyComponent.open('content of the modal', 'title of the modal');
});

通常,您不能触发在和Angular组件中定义的方法,因为为此您需要类的实例。 请注意,您从未在代码中的任何地方调用
newcomponent()
? 相反,您只需指定类并将它们与模板绑定,然后让Angular完成其余的工作

也就是说,您可以将该方法作为对某个全局对象的引用传递。 例如,您可以执行以下操作:

class Component {
  public fn () {} // <-- say you need this function
  constructor () {
    window.fn = this.fn.bind(this)
  }
}
类组件{

public fn(){}/通常,您不能触发在和Angle组件中定义的方法,因为为此您需要类的实例。 请注意,您从未在代码中的任何地方调用
newcomponent()
? 相反,您只需指定类并将它们与模板绑定,然后让Angular完成其余的工作

也就是说,您可以将该方法作为对某个全局对象的引用传递。 例如,您可以执行以下操作:

class Component {
  public fn () {} // <-- say you need this function
  constructor () {
    window.fn = this.fn.bind(this)
  }
}
类组件{

public fn(){}//是
open()
按钮
对象上的一个方法吗?为什么不让jQuery直接触发click?
$(“#按钮1”)。click();
@connexo正确。@Vlad274我是这样做的,但最后我想删除这个按钮并从jQuery函数调用open()。是
open()
button
对象上的一个方法?为什么不让jQuery直接触发点击?
$(“#button1”)。点击()
@connexo Correct.@Vlad274我是这样做的,但最后我想删除这个按钮并从jQuery函数中调用open()。
我强烈建议您学习使用角度(&w/o jQuery)不是将两者混为一谈。
-没错,让我高兴:)@ShadowFoOrm不想触发那种反应,但谢谢你:谢谢你:谢谢,我知道,但我不能删除这个jQuery。谢谢你的帮助。我可以调用函数,但要触发更改检测,我需要更新我的组件。我可以用NgZone来完成,就像文档中说,非常感谢
我强烈建议您学习使用Angular(&w/o JQuery)不是将两者混为一谈。
-没错,让我高兴:)@ShadowFoOrm不想触发那种反应,但谢谢你:谢谢你:谢谢,我知道,但我不能删除这个jQuery。谢谢你的帮助。我可以调用函数,但要触发更改检测,我需要更新我的组件。我可以用NgZone来完成,就像文件上说,感谢你的帮助