Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
如何使用javascript绑定Angular的控制器函数_Javascript_Angularjs - Fatal编程技术网

如何使用javascript绑定Angular的控制器函数

如何使用javascript绑定Angular的控制器函数,javascript,angularjs,Javascript,Angularjs,AngularJS中是否有一种方法可以仅使用Javascript而不是使用ng-*标记以编程方式绑定控制器方法 差不多 $("#foo").click(FooController.foo) 附:我没有权限访问$compile,它没有官方支持。当然,这在技术上是有可能的,但从JavaScript绑定事件处理程序意味着从控制器访问DOM元素,这违反了AngularJS的原则。这是不受官方支持的。当然,这在技术上是可能的,但从JavaScript绑定事件处理程序意味着从控制器访问DOM元素,这违反了

AngularJS中是否有一种方法可以仅使用Javascript而不是使用ng-*标记以编程方式绑定控制器方法

差不多

$("#foo").click(FooController.foo)

附:我没有权限访问$compile,它没有官方支持。当然,这在技术上是有可能的,但从JavaScript绑定事件处理程序意味着从控制器访问DOM元素,这违反了AngularJS的原则。

这是不受官方支持的。当然,这在技术上是可能的,但从JavaScript绑定事件处理程序意味着从控制器访问DOM元素,这违反了AngularJS的原则。

您真的需要控制器的方法还是范围

如果您需要范围,可以使用angular.element'myid'.scope.method

但请记住,如果您在AngularJS事件处理之外对作用域的值进行任何修改,都不会被检测到,因此您需要将代码包装到作用域的$apply函数中

还请记住,在AngularJS中,来自JS的DOM修改通常是不重要的


当然,有一些控制器的函数是使用这个函数创建的。xxx=函数。。。我不确定访问它们是否好,因为它们是私有的,但您应该能够以相同的方式访问:元素…控制器。方法

您真的需要控制器的方法还是范围

如果您需要范围,可以使用angular.element'myid'.scope.method

但请记住,如果您在AngularJS事件处理之外对作用域的值进行任何修改,都不会被检测到,因此您需要将代码包装到作用域的$apply函数中

还请记住,在AngularJS中,来自JS的DOM修改通常是不重要的


当然,有一些控制器的函数是使用这个函数创建的。xxx=函数。。。我不确定访问它们是否有好处,因为它们有点私有,但您应该能够以相同的方式访问它们:元素…controller.method

在某种程度上扩展@Valentin的答案,如果您想访问controller方法而不是$scope方法-例如。,在Angular主页上的控制器构造函数中定义的方法,tabs指令定义控制器上的函数addPane,使用它-您可以使用

angular.element('#myid').controller().method()

为了在某种程度上扩展@Valentin的回答,如果您希望访问控制器方法而不是$scope方法,例如,在Angular主页上的控制器构造函数中使用此方法定义的方法,则tabs指令使用此方法定义控制器上的函数addPane,您可以使用

angular.element('#myid').controller().method()

你可以,但你不应该。你很可能会在路上遇到麻烦


如果你能解释一下为什么要这样做,也许有更好更简单的方法。

你可以,但不应该。你很可能会在路上遇到麻烦

如果你能解释一下为什么要这么做,也许有更好更简单的方法