angular ui-router无法在头部找到脚本模板

时间:2015-08-11 13:50:06

标签: angularjs angular-ui-router

我正在尝试向我的身体注入一个内联模板,但我得到了一个

控制台中出现

GET http://localhost:3000/home.html 404 (Not Found)错误。

我已将剧本包含在脑中。

!!!
%html
  %head
    %title Movieseat

    %script{:id => "/home.html", :type => "text/ng-template"}
      .page-header
        %h1 Flapper News

  %body{"ng-app" => "movieseat"}

    %div{"ui-view" => ""}
    %a{"ui-sref" => "state1"} State 1
    %a{"ui-sref" => "state2"} State 2
    %a{"ui-sref" => "home"} home

这是路线模块,

angular.module('movieseat').config([

  '$urlRouterProvider', '$stateProvider', function($urlRouterProvider, $stateProvider) {
    $urlRouterProvider.otherwise('/home');

    $stateProvider

    .state('home', {
      url: '/home',
      templateUrl: '/home.html',
      controller: 'searchCtrl'
    })

    .state('state1', {
      url: '/state1',
      templateUrl: 'assets/angular-app/templates/state1.html'
    })

    .state('state2', {
      url: "/state2",
      templateUrl: "assets/angular-app/templates/state2.html"
    })
  }

]);

html>是否有问题?脚本标签上的erb转换?

2 个答案:

答案 0 :(得分:2)

问题是您的ng-app位于body,因此head中的脚本标记超出了主角度模块的范围。

如果templateUrl不存在于$ templateCache或script标签中(也最终在$ templateCache中),则会向服务器发出请求以检索它。

由于您的代码不在应用范围内,因此无法找到,因此会生成服务器请求。

可能的解决方案:

在正文中移动脚本标记或将ng-app属性移至<html>标记

答案 1 :(得分:0)

经过仔细阅读后,我发现我需要将脚本放在身体内,而不是放在头部。将它放入页脚后,其余的脚本就可以了。