我刚开始使用AngularJS与我的Rails应用程序,当我已经习惯了使用Rails内部HAML模板,我愿做同样的在客户端AngularJS。 问题是我不知道在哪里的HAML文件中读取。
我有投资者模型和我想的“秀”模板在转换为HAML,因为它是最容易下手。
这是我AngularJS与显示代码
investors.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。 然而,因为它是在操作太晚AngularJS不会在{{investor.name}}的HAML代码内改变投资者的名字。
如何正确实施AngularJS项目这样的内客户端HAML模板?