在html标签上声明ng-app和ng-controller是不是很糟糕?

时间:2013-10-08 17:29:13

标签: javascript angularjs

ng-app代码上声明ng-controller<html>是不好的做法?

例如:<html class="no-js" ng-app="myApp" ng-controller="MainCtrl">

这被认为是不好的做法吗?我正在尝试动态控制应用程序的<title>标记,所以我想尽早声明MainCtrl控制器,因为它的范围在应用程序的其余部分很重要。

然后我可以在<title>{{settings.title}}</title>控制器中使用MainCtrl并让子控制器通过$scope.$parent.settings.title = "hello world";

访问它

2 个答案:

答案 0 :(得分:14)

您应该能够通过$window抽象来访问和设置标题,从而无需在html标记上放置控制器。

答案 1 :(得分:12)

我认为到目前为止还没有任何问题。 唯一的影响是rootcope不再具有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 

当涉及到相同的标记时,

<div id="parent" ng-app ng-controller='...'>

$rootScope.$id = 002    // rootscope from $rootscope service
$("#parent").scope().$id =003 // controller scope get from element scope

在这里你无法从元素范围获得rootcope,但是谁在乎。