ng-include忽略onload指令

时间:2016-01-15 19:30:45

标签: javascript angularjs

我在ng-include中有一个onload指令,似乎它被完全忽略了。 <h1>块包含在我的HTML中,但未调用test()。没有错误,没有日志,没有。感谢。

这是一个非常简单的例子:

<!doctype html>
<html>
<head>
  <title>Testting</title>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js">    </script>
  <script>
  var myApp = angular.module('testApp', []);

  myApp.controller('MyMenu', ['$scope', '$element', function($scope, $element) {
    $scope.username = 'David';
    $scope.test = function() { console.log("Testing!"); };
  }]);
  </script>

</head>
<body ng-app="testApp">
  <div ng-include="'views/global-nav.html'" onload="test()"></div>
</body>
</html>

和views / global-nav.html:

<h1 ng-controller="MyMenu">Hello {{username}}!</h1>

1 个答案:

答案 0 :(得分:0)

您已在控制器'MyMenu'中声明了test(),因此test()函数位于控制器的范围内。但是这里调用test()的方式是onload会在自己的范围内搜索test(),但由于它不在这个范围内(它在控制器的范围内,是包含onload的div的子节点),它不起作用。

请查看以下

 <!doctype html>
 <html>
 <head>
   <title>Testting</title>
   <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js">    </script>
   <script>
   var myApp = angular.module('testApp', []);

   myApp.controller('MyMenu', ['$scope', '$element', function($scope, $element) {
     $scope.username = 'David';
     $scope.test = function() { console.log("Testing!"); };
   }]);
   </script>

 </head>
 <body ng-app="testApp">
   <div ng-controller="MyMenu">
   <div ng-include="'views/global-nav.html'" onload="test()"></div></div>
 </body>
 </html>

和views / global-nav.html: -

<h1>Hello {{username}}!</h1>