Javascript 角度ui路由器控制器范围

Javascript 角度ui路由器控制器范围,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,当我使用常规角度控制器时,我将控制器属性放在DOM元素中,控制器控制该元素中的所有DOM树,例如 <div ng-controller="myController"> 此控制器的作用域是什么?您不应该在div中手动声明控制器,除非您的目的是使ReportController的子级(控制器)控制DOM的某些嵌套和特定部分 作为孩子,myController将继承ReportController的作用域,后者是模板中最高级的控制器 避免在HTML中声明控制器的好处是,使用完全相同的HT

当我使用常规角度控制器时,我将控制器属性放在DOM元素中,控制器控制该元素中的所有DOM树,例如

<div ng-controller="myController">

此控制器的作用域是什么?

您不应该在
div
中手动声明控制器,除非您的目的是使
ReportController
的子级(控制器)控制DOM的某些嵌套和特定部分

作为孩子,
myController
将继承
ReportController
的作用域,后者是模板中最高级的控制器

避免在HTML中声明控制器的好处是,使用完全相同的HTML,跨潜在的各种控制器提高HTML模板的可重用性


一个典型的例子是一个编辑表单和一个添加表单(CRUD),它们映射到各自不同的控制器,但相同的HTML模板。

它将控制templateUrl中的内容。让我们想象一下,有一个div占位符,templateUrl.html文件中的所有内容都将放在其中,并且声明的控制器将相应地紧挨着div占位符。您可以查看angular ui router src以了解其工作原理。好的,因此我通过ui router定义控制器。这个控制器的范围是什么?我在代码中放置了{var}}变量,并且只能在ui视图元素中看到这些值。我想在包装ui视图的布局中放置值。可以从模板
report.html
访问此控制器中的所有变量。它只针对ui视图的内部。然后,包装视图应该声明自己的“父”状态,并定义自己的控制器。例如,一个名为
main
(针对布局)的状态和另一个名为
main.report
(针对布局中的嵌套ui视图)的状态。
.state('report', {
    url: '/site/:site/report',
    templateUrl: 'minderbinder/report/view/report.html',
    controller: 'ReportController'
})