Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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/25.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 AngularJS指令能否访问控制器实例?_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS指令能否访问控制器实例?

Javascript AngularJS指令能否访问控制器实例?,javascript,angularjs,Javascript,Angularjs,AngularJS最近添加了对新控制器的支持,作为语法,它似乎旨在取代$scope: 如果有一条指令出现在连接了控制器的视图中,并且希望在该指令和模型之间共享数据,则以前可以使用$scope: 是否有方法将控制器用作语法,并允许在使用该控制器的视图中发生的指令访问其作用域?控制器作为语法将控制器放置在具有给定名称的作用域中。原型继承该作用域的任何作用域也将继承控制器 小提琴示例: 具有独立作用域的指令仍然可以使用具有我认为不雅的$parent scope的控制器。控制器作为语法将控制器放置在具有

AngularJS最近添加了对新控制器的支持,作为语法,它似乎旨在取代$scope:

如果有一条指令出现在连接了控制器的视图中,并且希望在该指令和模型之间共享数据,则以前可以使用$scope:

是否有方法将控制器用作语法,并允许在使用该控制器的视图中发生的指令访问其作用域?

控制器作为语法将控制器放置在具有给定名称的作用域中。原型继承该作用域的任何作用域也将继承控制器

小提琴示例:

具有独立作用域的指令仍然可以使用具有我认为不雅的$parent scope的控制器。

控制器作为语法将控制器放置在具有给定名称的作用域中。原型继承该作用域的任何作用域也将继承控制器

小提琴示例:


具有隔离作用域的指令仍然可以使用具有我认为不雅的$parent scope的控制器。

控制器作为功能将控制器发布到具有给定名称的$scope中。因此,在您的示例中,如果将ng controller=ExCtrl作为ctrl,那么在指令中,您应该能够使用

scope.ctrl.property2 = "another value";

但这并不是推荐的方法,因为它会将指令与控制器紧密耦合。更好的方法是使用隔离范围并通过属性传入属性,或者使用共享服务共享数据

控制器作为功能将控制器发布到具有给定名称的$scope中。因此,在您的示例中,如果将ng controller=ExCtrl作为ctrl,那么在指令中,您应该能够使用

scope.ctrl.property2 = "another value";


但这并不是推荐的方法,因为它会将指令与控制器紧密耦合。更好的方法是使用隔离范围并通过属性传入属性,或者使用共享服务共享数据

控制器as不是为了替换,而是为了增强,范围…因此,如果在一个视图中,您需要一个从绑定到视图的控制器访问模型的指令,那么使用controller as是没有意义的,您也可以坚持使用$scope,或者最终使用控制器实例上的一些数据和范围上的一些数据?您可以像angular中的许多事情一样,以任何一种方式进行操作,只有指导和最佳方法,没有严格的规则。我一直遵循的模型是控制器上的行为、范围上的数据和数据操作。思考:过滤函数、来自$http的结果等。controller as不是为了替换,而是为了增强,范围…因此,如果在一个视图中,您需要一个从绑定到视图的控制器访问模型的指令,那么使用controller as是没有意义的,您也可以坚持使用$scope,或者最终使用控制器实例上的一些数据和范围上的一些数据?您可以像angular中的许多事情一样,以任何一种方式进行操作,只有指导和最佳方法,没有严格的规则。我一直遵循的模型是控制器上的行为、范围上的数据和数据操作。思考:过滤函数、来自$http的结果等等。我认为这并不能真正回答我的问题。看一看。是否可以通过指令链接功能访问控制器中分配给它的数据?正如我所说的,请参阅更新的fiddle:和您的控制台:啊,谢谢!我想我可能误解了你的答案。这就是我一直在寻找的,我不确定我以前在链接中记录作用域时怎么会错过它。@NikosParaskevopoulos我同意它很优雅,但其他人能做到吗?@Tushar:取决于你的情况。。。您可以将控制器传递到隔离作用域它毕竟是一个作用域变量,您可以从指令中要求控制器…我认为这并不能真正回答我的问题。看一看。是否可以通过指令链接功能访问控制器中分配给它的数据?正如我所说的,请参阅更新的fiddle:和您的控制台:啊,谢谢!我想我可能误解了你的答案。这就是我一直在寻找的,我不确定我以前在链接中记录作用域时怎么会错过它。@NikosParaskevopoulos我同意它很优雅,但其他人能做到吗?@Tushar:取决于你的情况。。。您可以将控制器传递到隔离作用域。毕竟,它是一个作用域变量,您可以从指令中要求控制器…谢谢。是的,我同意紧密耦合的观点。这只是我试图更好地了解控制器实际上是如何工作的,我现在明白了。谢谢。是的,我同意紧密耦合的观点。这只是我试图更好地了解控制器实际上是如何工作的,我现在明白了。
scope.ctrl.property2 = "another value";