У меня есть шаблон, в котором мне нужен текст редактирования и список допустимых_thimes (этот рассчитывается в зависимости от даты редактирования).
я узнал, что код контроллера кажется только один раз запустить и не тогда, когда я делаю $ state.go (
Наблюдая за умник видео-х я видел, что решимость (в состоянии) используется для перед тем, как открыть форму, перед тем, как открыть форму. С кодом, который у меня есть, перед тем, как загрузится текст редактирования (то же самое с allow_times), будет установлен параметр $ scope.timesheet. То же самое можно сделать с допустимыми_times.Как я могу это исправить?
В моей службе У меня есть этот код:
.factory('Timesheets', function($resource, $rootScope, LinkData, Company) {
var Timesheet = $resource('http://127.0.0.1:3000/api/v1/timesheets/:id',{id:'@id'}, {update:{method:'PUT'}});
var _allowed_times;
return {
timesheet: function() {
return Timesheet;
},
allowed_times: function() {
return this._allowed_times
},
get: function(id){
return Timesheet.query({q: {id_eq: id}}).$promise.then(function (data, status) {
this.editingTimesheet = data;
Company.allowed_times(data.currentDate).then(function(data2) { //fill allowed times
this._allowed_times = data2;
});
});
}
}
})
В контроллер у меня есть это:
var TimesheetDetailCtrl = app.controller('TimesheetDetailCtrl', function($scope, Timesheets) {
$scope.allowed_times = Timesheets.allowed_times();
$scope.timesheet = Timesheets.editingTimesheet;
}
Я также получил эту функцию, я карту, чтобы решить в .state:
TimesheetDetailCtrl.beforeShow = function($q, $stateParams, Timesheets) {
Timesheets.get($stateParams.timesheetId);
};
И, наконец, у меня есть такое состояние:
.state('timesheet-detail', {
url: '/timesheet/:timesheetId',
templateUrl: 'templates/timesheet-detail.html',
controller: 'TimesheetDetailCtrl',
resolve: {
reset: TimesheetDetailCtrl.beforeShow
}
})
Дополнительный вопрос: функция beforeShow будет выполняться каждый раз при загрузке шаблона. Код в контроллере нет:
$scope.timesheet = Timesheets.editingTimesheet;
я правильно предполагая, что при изменении Timesheets.editingTimesheet, он будет автоматически также изменить $ scope.timesheet и поэтому код в контроллере не нужно будет работать каждый раз?