我刚刚开始在我的 Rails 应用程序中使用 AngularJS,并且因为我习惯在 Rails 中使用 haml 模板,所以我想在客户端对 AngularJS 做同样的事情。问题是我不知道在 haml 文件中读取的位置。
我有一个投资者模型,我正在尝试将“显示”模板转换为 haml,因为它是最容易开始的。
这是我与 show 相关的 AngularJS 代码
投资者.js.coffee
# Setup the module & route
angular.module("investor", ['investorService'])
.config(['$routeProvider', ($provider) ->
$provider
.when('/investors/:investor_id', {templateUrl: '/investors/show.html', controller: 'InvestorCtrl'})
])
.config(["$httpProvider", (provider) ->
provider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content')
])
angular.module('investorService', ['ngResource'])
.factory('Investor', ($resource) ->
return $resource('/investors/:investor_id.json', {}, {
show: {method: 'GET'},
})
)
angular.bootstrap document, ['investor']
这是我的控制器 AngularJS 代码
Investors_controller.js.coffee
# Show Investor
window.InvestorCtrl = ($scope, $routeParams, Investor) ->
html = haml.compileHaml({sourceId: 'simple'})
$('#haml').html(html())
investor_id = $routeParams.investor_id
$scope.investor = Investor.show({investor_id: investor_id})
在后端,我有一个 Rails JSON API。
这是它读取的 show.html 文件
<script type="text/haml-template" id="simple">
%h1 {{investor.name}}
</script>
<div id="haml"></div>
<h1>{{investor.name}}</h1>
<p>
<b>Total Cost</b>
{{investor.total_cost}}
</p>
<p>
<b>Total Value</b>
{{investor.total_value}}
</p>
<a href='/investors/angular#/investors/{{investor.id}}/edit'>Edit</a>
<a href='/investors'>Back</a>
最终,我想要一个 .haml 并将其传递给 templateURL 并获取 haml_coffee_assets 插件以在 AngularJS 开始查看动态字段并更改内容之前对其进行编译。
参考:https ://github.com/netzpirat/haml_coffee_assets
目前这将转换haml并将其放入具有haml id的div中。但是 AngularJS 不会将 haml 代码中的 {{investor.name}} 更改为投资者的名字,因为它在操作中为时已晚。
如何在这样的 AngularJS 项目中正确实现客户端 haml 模板?