Tôi vừa mới bắt đầu sử dụng AngularJS với ứng dụng Rails của mình và vì tôi đã quen sử dụng các mẫu haml trong Rails Tôi muốn làm tương tự với AngularJS ở phía máy khách. Vấn đề là tôi không biết đọc ở đâu trong file haml.angularjs với client side haml
Tôi có một mô hình cho nhà đầu tư và tôi đang cố gắng chuyển đổi mẫu 'hiển thị' sang chế độ haml vì đây là cách dễ nhất để bắt đầu.
Dưới đây là mã AngularJS của tôi liên quan đến hiển thị
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']
Đây là mã AngularJS điều khiển của tôi
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})
Trong backend tôi có một API JSON Rails.
Dưới đây là file show.html nó đọc trong
<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>
Cuối cùng, tôi muốn có một .haml và chuyển thông tin này đến templateURL và nhận được haml_coffee_assets cắm để biên dịch nó trước khi AngularJS bắt đầu nhìn vào các trường động và thay đổi nội dung.
Ref: https://github.com/netzpirat/haml_coffee_assets
Hiện này sẽ chuyển đổi các Haml và đặt nó vào div với id của Haml. Tuy nhiên AngularJS sẽ không thay đổi {{investor.name}} trong mã haml thành tên của nhà đầu tư khi quá muộn trong hoạt động.
Làm cách nào để triển khai đúng các mẫu haml phía máy khách trong dự án AngularJS như thế này?
tại sao không hiển thị hình ảnh phía máy chủ? Viết và phục vụ haml của bạn như bình thường và cho phép ứng dụng phía máy khách yêu cầu html được chuyển đổi. Bằng cách này bạn tận dụng lợi thế của bộ lọc của haml và không chiến đấu góc cạnh. Nếu không, bạn sẽ tự bootstrap bạn ứng dụng góc sau khi phân tích cú pháp mẫu haml trên máy khách. Tôi đã không thử nó nhưng nó có thể hoạt động. – jaime
Vì vậy, nếu tôi sử dụng chế độ xem Rails ở định dạng haml thì tôi sẽ đặt gì trong templateUrl? – map7