角度轨道模板:找不到模板



我有一个rails应用程序,使用angularjs进行客户端开发。我尝试加载位于"应用程序/资产/javascripts/templates/"中的模板:

myApp.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/', {
        templateUrl: '/index.html',
        controller: 'MainController'
      }).
      otherwise({
        redirectTo: '/'
      });
  }]);

但我总是收到一个错误:"错误:[$compile:tpload] 无法加载模板:/index.html"。

我尝试将"模板"文件夹移出javascripts - app/assets/templates,并通过将以下行添加到config/application.rb来将其添加到我的资产管道加载中:config.assets.paths << Rails.root.join("app","assets","templates")

我一直收到相同的错误消息,直到我使用模板的完整路径:templateUrl: '/assets/index.html',

  1. 为什么第一种方法还不够? 角度轨道模板 gem 不应该在应用程序/资产/JavaScript/模板中查找模板吗?

  2. 为什么我应该在我的 JavaScript 中使用资产的完整路径?

我的问题是sprockets不兼容。版本 2.1.3 虽然有效,所以我把它放在我的Gemfile

gem 'sprockets', '2.12.3'

我跑bundle update sprockets,都是桃色的。

实践表明,您应该将 Angular 模板保存在./public文件夹中。例如,在public文件夹中创建一个名为模板的文件夹。现在你可以这样称呼它们:templateUrl: 'templates/index.html'

这是有道理的,因为app/assets/确实仅用于javascript和css文件。此外,您还有 html 文件 在 app/views ,但这些文件是由服务器编译的,因为它们使用扩展名.erb。您想要的是随时可以使用常规html文件。所以你把它们放到公用文件夹。

试试这个,我希望这会奏效。

 myApp.config(function ($routeProvider) {
  $routeProvider.
    when('/', {
     templateUrl: '/index.html',
     controller: 'MainController'
    }).
    otherwise({
     redirectTo: '/'
   });
});

我通过将"gem'sprockets'"添加到 Gemfile 中来解决此问题

最新更新