У меня есть следующий шаблон:
{{#each item in controller.pagedAutomationExceptions}}
{{log item}}
<tr {{bindAttr class="item.rowClass"}}>
<td class="text-center">{{unbound item.BTicket}}</td>
<td>{{unbound item.Reason}}</td>
<td>{{unbound item.TimeReceived}}</td>
<td>
{{#if item.ShowContactVoltageSources}}
{{view Ember.Select
contentBinding="controller.contactVoltageSources"
optionValuePath="content.Name"
optionLabelPath="content.Name"
valueBinding="item.AutomationValue"
prompt="Choose one..."}}
{{/if}}
{{#if item.ShowVoltageField}}
{{view Ember.TextField valueBinding="item.AutomationValue"}}
{{/if}}
{{#if item.ShowEnergizedObjects}}
{{view Ember.Select
contentBinding="controller.energizedObjects"
optionValuePath="content.Name"
optionLabelPath="content.Name"
valueBinding="item.AutomationValue"
prompt="Choose one..."}}
{{/if}}
</td>
<td>
{{#if item.Errored}}
{{/if}}
{{#if item.IsUpdating}}
<btn class="btn btn-primary" disabled="disabled">
Updating..
</btn>
{{else}}
<btn {{action updateAutomationException item target="controller"}}
class="btn btn-primary">
Update
</btn>
{{/if}}
</td>
</tr>
{{/each}}
Все работает как положено, но когда я пытаюсь изменить маршрут, я получаю следующую ошибку:
Uncaught TypeError: Не удается прочитать свойство IsUpdating неопределенного
Если я удалю эту строку, то будет какое-то другое свойство, которое она не сможет прочитать. Я не уверен, что происходит, очевидно, ember каким-то образом получает неопределенный объект, но я не понимаю, как это сделать, я создаю экземпляры каждого из своих объектов и помещаю их в массив.
Вот контроллер (извините, если не точно, я ушел с работы, поэтому делаю его по памяти, также я менял его около миллиона раз, пытаясь решить проблему, поэтому я не думал, что проблема в нем) :
App.Exception = Ember.Object.extend({
// properties used in template, etc..
});
App.ExceptionsController = Ember.Controller.extend({
init: function () {
this._super();
// ajax request to get exceptions from database
// once inspections are loaded
// set(automationExceptions, response)
// loadMoreExceptions()
},
automationExceptions: [],
pagedAutomationExceptions: Ember.A(),
loadMoreExceptions: function () {
// i have a variable that i store to tell me
// how many exceptions I'm currently showing.
// If there are more, I just add to this variable
// the paging amount, and for those elements
// create a new exception and add it to the
// paged array. This method also seems to work
// because I get more records on the view.
for (; currentTake < newTake; ++currentTake) {
var simple = automationExceptions[currentTake];
this.get('pagedAutomationExceptions').pushObject(
App.Exception.create(simple));
}
},
updateAutomationException: function () {
// ajax post update, this works fine..
}
});