使用angularjs和rails加载html模板
我无法使用angularjs在rails应用程序中加载模板。以下是我的设置使用angularjs和rails加载html模板,angularjs,templates,ruby-on-rails-4,Angularjs,Templates,Ruby On Rails 4,我无法使用angularjs在rails应用程序中加载模板。以下是我的设置 #app/assets/javascripts/app.js app = angular.module('app', ['ui.router', 'templates']) app.config(function($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise("/home"); $stateProvider .stat
#app/assets/javascripts/app.js
app = angular.module('app', ['ui.router', 'templates'])
app.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise("/home");
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'home.html'
})
});
#app/assets/javascripts/templates/home.html
<h1>abc</h1>
#app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require angular/angular
//= require angular-ui-router/release/angular-ui-router
//= require angular-rails-templates
//= require_tree ./templates
//= require_tree .
#app/views/layouts/application.html.erb
<body ng-app="app">
<div ui-view=''></div>
但是如果我使用template
而不是templateUrl
,并提供内联html,它就可以正常工作
任何帮助都将不胜感激……)
我正在使用angular-rails-templates-0.1.3
和rails-4.2.0
尝试更改:
templateUrl: 'home.html'
致:
看起来
angular rails templates
的版本有一个bug,该bug在0.1.4()中已修复。因此,将gem更新到一个更新的版本应该可以修复这个bug
尝试更新您的angular rails模板版本
我不建议手动放置'/javascripts/templates/home.html'
(或正确的格式:'/assets/javascripts/templates/home.html'
),因为这是资产管道的一部分
编辑:如果Sprocket 3+是必需的(例如,对于ES6 Javascript语法),则必须寻找不同的修复方法。建议在此线程中使用两个可能的修复程序:。然而,angular rails templates
项目的维护人员似乎在解决这个问题时遇到了一些问题
虽然mcasimir建议用一个简单的Ruby初始值设定项和几行JS代码替换
angular rails模板
,但如果升级angular rails模板
(/downgradingSprocket
)不是一个选项,谢谢你的回答,但还是一样的http://localhost:3000/javascripts/templates/home.html 404(未找到)
;(谢谢你的回答(很抱歉接受得太晚,我没有时间做这件事),我关注了问题#95,我不得不降级'sprockets',2.12.3'
,然后它开始工作。但是,快速提问,你对依赖旧版本的sprockets
有什么想法?这取决于你的用例。有些库依赖于sprockets 3,因此如果你需要其中任何一个,你可能会有问题。That说,看起来<代码>angular rails templates理解这一点,并正在积极尝试进行修复。我认为我现在会选择最简单的方法,而不是过于担心它。最终,如果angular rails templates停止运行,那么将其细分为angular rails templates或任何其他中间件可能不会太困难也就是说,如果你真的很担心,你可以在模板引用中添加一个应用程序范围的名称空间:templateUrl:appConfig.templatesNamespace+'home.html'
,你可以将它分为“/assets/javascripts/templates/”
。我个人不会走这条路,因为这看起来太像是等待问题的解决方案(有什么意义?),而且似乎其他维护代码的开发人员可能会滥用它。谢谢你的评论,我听到了你的观点。我现在不应该过度思考问题,如果问题没有坏掉,就不要修复它。
:D
templateUrl: 'home.html'
templateUrl: '/javascripts/templates/home.html'