Javascript 在html标记上声明ng应用程序和ng控制器是否不好?
在Javascript 在html标记上声明ng应用程序和ng控制器是否不好?,javascript,angularjs,Javascript,Angularjs,在标签上同时声明ng app和ng controller是否为不良做法 例如: 这被认为是不好的做法吗?我试图动态控制我的应用程序的标记,因此我想尽早声明MainCtrl控制器,因为它的作用域在应用程序的其余部分很重要 然后我可以在MainCtrl控制器中使用{{settings.title},并让子控制器通过$scope.$parent.settings.title=“hello world”访问它您应该能够通过$window抽象来访问和设置标题,这样就不需要在html标签上放置控制器。我认为
标签上同时声明ng app
和ng controller
是否为不良做法
例如:
这被认为是不好的做法吗?我试图动态控制我的应用程序的
标记,因此我想尽早声明MainCtrl
控制器,因为它的作用域在应用程序的其余部分很重要
然后我可以在
MainCtrl
控制器中使用{{settings.title}
,并让子控制器通过$scope.$parent.settings.title=“hello world”访问它
您应该能够通过$window
抽象来访问和设置标题,这样就不需要在html
标签上放置控制器。我认为目前为止不会有任何问题。
唯一的影响是根范围不再可从html标记读取,因为控制器范围正在覆盖它
比如说,
<div id="parent" ng-app>
<div id="child" ng-controller='...'>
$rootScope.$id = 002 // rootscope from $rootscope service
$("#parent").scope().$id =002 // rootscope scope get from element scope
$("#child").scope().$id =003 // controller scope get from element scope
$rootScope.$id=002//来自$rootScope服务的rootScope
$(“#父”).scope().$id=002//rootscope范围从元素范围获取
$(“#子”).scope().$id=003//从元素范围获取控制器范围
当涉及到相同的标记时
<div id="parent" ng-app ng-controller='...'>
$rootScope.$id = 002 // rootscope from $rootscope service
$("#parent").scope().$id =003 // controller scope get from element scope
$rootScope.$id=002//来自$rootScope服务的rootScope
$(“#父”).scope().$id=003//控制器范围从元素范围获取
在这里,您无法从元素范围中获取rootscope,但谁在乎呢。好吧……他们在这篇博文中这样做了:--没有提到practice tho,我只是想与大家分享一下。好问题,+1我不认为有什么问题。您需要考虑的是,现在您正在定义一个伪全局控制器。document.title=“title”当在控制器中执行任何DOM操作被认为是不好的做法时,您会在哪里使用
$window
?我所能想到的就是将ng controller
与ng title
指令一起放在body标签上,让该指令向上搜索,直到找到父文档的head
标签。此外,那么,您将如何利用
上的ng href
动态包含样式表?您通常可以通过ng init或其他对象(如$rootScope.object.$id)访问父级