Như một kịch bản chung mà nhiều nhà phát triển khác gặp phải - chúng ta có một ứng dụng trưởng thành dựa trên Symfony2/TWIG và một số mẫu html.twig quá tải quá nhiều với mã jQuery và khó duy trì. Điều gì về việc ném đi jQuery, và sử dụng Angular? Được cung cấp một số kiến thức cơ bản về mô-đun góc, bộ điều khiển, dịch vụ và phạm vi, và kiến thức sâu về Symfony2/TWIG, vấn đề nắm tay của tôi là - cách tốt nhất để chuyển biến từ các bộ điều khiển/mẫu ghép hiện có của mình sang bộ điều khiển góc ?Cách tốt nhất để chuyển các biến từ Symfony2 sang góc Angular
Tôi không muốn tải phạm vi thông qua cuộc gọi JSON riêng biệt và bộ điều khiển riêng biệt trong Symfony2. Chỉ muốn sử dụng các biến hiện tại tôi có trong cành.
Một cách để làm là khai báo một số js biến toàn cục:
<script>
var window.someVar = {{ twig_object | json_encode() }};
</script>
một sau đó làm smth như
<div ng-controller="myCtrl" ng-init="init()">
<div ng-model="someVar"> .... </div>
</div>
và trong điều khiển
app.controller('myCtrl', ['$scope', function($scope) {
$scope.init = function() {
if (window['someVar']) {
$scope['someVar'] = window['someVar'];
}
};
Nhưng điều này dường như quá xấu xí cho tôi (3 bước) Có thể đơn giản hóa ít nhất hoặc thực hiện theo cách khác không?
My kinh nghiệm của riêng bạn là bạn sẽ trở thành ntly chiến đấu AngularJS. Đối với tôi nó đã được kết thúc dễ dàng hơn để thêm một tham số _format = json vào các tuyến đường của tôi và sau đó chỉ cần trả về json từ bộ điều khiển. Giữ AngularJS hạnh phúc và cành ra khỏi hình ảnh. Plus, bạn sẽ không phải đối phó với toàn bộ vấn đề niềng răng xoăn. – Cerad
@Cerad Tôi rất tò mò về vấn đề về dấu ngoặc nhọn. Trong MVC (mà tôi sử dụng), chúng tôi giới thiệu các biến phía máy chủ với ký hiệu * @ *, nhưng bạn sử dụng cùng một phía máy khách cú pháp ở đây (cho nội suy) như bạn làm phía máy chủ (cho các biến được truyền xuống từ máy chủ)! Bạn không gặp phải vấn đề theo thời gian, hoặc là nó OK vì máy chủ nhìn thấy mã đầu tiên? – JMK
@JMK - Tôi không hiểu câu hỏi của bạn. Tôi tránh các vấn đề xoăn bằng cách giữ các mẫu hình xoắn ốc và angularjs trong các tập tin riêng biệt. Các angularjs được phục vụ trực tiếp mà không đi qua S2 cả. – Cerad