Tôi có một dịch vụ AngularJS mà giao tiếp với máy chủ và trả về bản dịch của các phần khác nhau của ứng dụng:AngularJS ui-router: cách giải quyết dữ liệu điển hình trên toàn cầu cho tất cả các tuyến đường?
angular
.module('utils')
.service('Translations', ['$q','$http',function($q, $http) {
translationsService = {
get: function(section) {
if (!promise) {
var q = $q.defer();
promise = $http
.get(
'/api/translations',
{
section: section
})
.success(function(data,status,headers,config) {
q.resolve(result.data);
})
.error(function(data,status,headers,config){
q.reject(status);
});
return q.promise;
}
}
};
return translationsService;
}]);
Tên của phần này được chuyển như section
tham số của get
chức năng.
Tôi đang sử dụng mô-đun AngularJS ui-router và sau mẫu thiết kế được mô tả here
Vì vậy, tôi đã tình trạng sau config:
angular.module('app')
.config(['$stateProvider', function($stateProvider) {
$stateProvider
.state('users', {
url: '/users',
resolve: {
translations: ['Translations',
function(Translations) {
return Translations.get('users');
}
]
},
templateUrl: '/app/users/list.html',
controller: 'usersController',
controllerAs: 'vm'
})
.state('shifts', {
url: '/shifts',
resolve: {
translations: ['Translations',
function(Translations) {
return Translations.get('shifts');
}
]
},
templateUrl: '/app/shifts/list.html',
controller: 'shiftsController',
controllerAs: 'vm'
})
này hoạt động tốt nhưng khi bạn có thể nhận thấy tôi phải rõ ràng chỉ định translations
trong thông số giải quyết. Tôi nghĩ rằng đó là không đủ tốt vì điều này trùng lặp logic.
Có cách nào để giải quyết các bản dịch trên toàn cầu và tránh các bản sao mã không. Ý tôi là một số loại phần mềm trung gian.
Tôi đã suy nghĩ về việc lắng nghe cho các $stateChangeStart
, sau đó nhận được bản dịch cụ thể cho nhà nước mới và ràng buộc chúng với bộ điều khiển, nhưng tôi đã không tìm thấy cách để làm điều đó.
Mọi lời khuyên sẽ được đánh giá rất cao.
Lưu ý quan trọng: Trong trường hợp của tôi, số translations object
được giải quyết phải chứa dữ liệu bản dịch, không phải dịch vụ/nhà máy/bất cứ điều gì.
Trân trọng.
Tôi không có thời gian để viết câu trả lời, nhưng tôi nên đề cập rằng định nghĩa trạng thái là các đối tượng javascript đơn giản. Bạn có thể đặt chúng trong một danh sách (đặt khai báo 'name:' như là một thuộc tính lồng nhau của mỗi trạng thái) và lặp lại trên mỗi danh sách. Trên mỗi trạng thái bạn lặp lại, hãy thêm giải pháp. –