Я новичок в EmberJS, и столкнулся с проблемой обновления данных модели
Контроллер :
export default Ember.Controller.extend({
queryParams: ['jobid'],
jobid: null,
currentCount: null,
actions: {
onOffToggle(e) {
var isChanged = this.get('model.b.isChanged');
this.set('model.b.enable', e.target.checked);
this.set('model.b.isChanged', !isChanged);
console.log(this.get('model.b.isChanged'))
},
iterationCountChange() {
var currentCount = this.get('currentCount');
var isCountChanged =
(currentCount != this.get('model.b.count')) ? true : false;
this.set('model.b.isCountChanged', isCountChanged);
}
}});
Маршрут:
export default Ember.Route.extend({
ajax: Ember.inject.service(),
beforeModel: function (transition) {
this.jobid = transition.queryParams.jobid;
},
model(){
return Ember.RSVP.hash({
a: this.store.queryRecord('a', {jobid: this.get("jobid")}),
b: this.store.queryRecord('b', {id: this.get("jobid")})
});
},
setupController: function(controller, model) {
this._super(controller, model)
controller.set('currentCount', model.b.get('iterationCount'))
},
actions: {
paramChange(a, b)
Ember.$.ajax({
url: "/rest/test",
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
b: b,
a: a
})
}).then(response => {
this.refresh();
})
},
error(error, transition) {
if (error.errors[0].status == 404) {
return this.transitionTo('not-found', { queryParams: {'previous': window.location.href}});
}
}
}
});
Здесь, в контроллере, я отслеживаю, изменились ли некоторые значения, и если они изменились, обновите флаг, связанный с их изменением, такие флаги, как isChanged
и isCountChanged
, являются частью данных модели.после того, как пользователь нажимает кнопку отправки, вызывается действие paramChange
, затем выполняется пост-вызов для обновления БД для соответствующих изменений свойств, а затем вызывается this.refresh()
для отображения последних данных модели.
Нопроблема заключается в том, что как только isChanged
и / или isCountChanged
изменяются со значения по умолчанию, они не сбрасываются на новое значение, присутствующее в данных модели, например, после refresh
значение обоих этих флагов должно бытьСброс на ложь, но это всегда происходит, я проверил значение в хуке setUpController
для значений этих флагов, и это подтверждает истину.
По моему мнению, это имеет отношение к контроллеру, так как любойvalue, который используется в контроллере один раз, не сбрасывается на новое значение, которое приходит после refresh
.
Пожалуйста, помогите Я потратил много времени на это и ничего не получил до сих пор, сообщите, если требуется какая-либо дополнительная информация.
Ember версия: 2.6