.js 未在 ng-view 上应用

.js not getting applied on ng-view

我有 index.htmlng-view 里面。我已将相应的 .js 文件导入到 index.html,但那些 .js 未在注入视图中应用。

index.html

<!DOCTYPE html>
<html class="no-js css-menubar" lang="en" >
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<head>
<title>gg</title>  
  <!-- Scripts -->
    <script src="js/userdat.js"></script>
</head>
<body class="dashboard site-menubar-push" ng-app="app">
   <h1>Header</h1>

   <ng-view></ng-view> 

   <script src="assets/js/jquery-1.9.1.js"></script>
   <script src="assets/js/jquery.mobile-1.4.2.js"></script>
   <!-- AngularJS Angular-route -->
   <!--Angular linking -->
   <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js"></script>
   <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular-route.min.js">
   </script>
   <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular-resource.js">
   </script>  
</body>
</html>

<script src="js/userdat.js"></script> 有 jQuery 内容,它加载完美,但其中的逻辑 return 无法在 ng-view 注入 ui elements.if 我在部分导入它工作正常但不稳定,你知道我怎样才能正确导入它。

partials.html

<script src="js/userdat.js"></script>
<div class="jumbotron text-center">
   <h1>Home Page 4 Life</h1>
   <p>hi</p>
</div>

执行此操作的最佳方法是使用 RequireJS,但如果您的项目已经很大,这将非常困难。

使用 RequireJS,您甚至可以向路由添加解析:

resolve: {
  userdat: function($q) {
    var deferred = $q.defer();
    require(['./js/userdat.js'], function(userdat) {
      deferred.resolve(userdat);
    });
    return deferred;
  }
}

如果实现 RequireJS 太难,我会把代码硬编码到视图中。

要么将所有 CDN 包括(jquery、angular、...)放在 <head> 元素中,要么将 userdat.js 放在 userdat.js 元素的底部<body>.

请注意,如果您正在访问注入 ng-view 的带有 JQuery 的 DOM 元素,您将需要监听 $routeChangeSuccess 事件,因为html 在 angular 摘要后被修改。