Ho creato un piccolo esempio per provare a far funzionare più modelli senza Ember Data.Come si lavora con più modelli in Ember JS (senza Ember Data)?
App = Ember.Application.create();
App.Router.map(function() {
this.resource('employees', function() {
this.route('employee');
});
});
App.Employee = Ember.Object.extend({});
App.Employee.reopenClass({
findAll: function() {
return $.getJSON("http://localhost/api/employee").then(
function (response) {
var employees = [];
response.forEach(function (child) {
employees.push(App.Employee.create(child));
});
console.log(employees.join('\n'));
return employees;
}
);
}
});
App.EmployeesController = Ember.ArrayController.extend({});
App.EmployeesRoute = Ember.Route.extend({
model: function() {
return App.Employee.findAll();
}
});
manubrio:
<script type="text/x-handlebars">
<p>Application template</p>
{{#linkTo employees}}<button>Show employees</button>{{/linkTo}}
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="employees">
<p>Employees template</p>
{{#each controller}}
<p>{{Name}}</p>
{{/each}}
{{outlet}}
</script>
Se navigando al localhost/#/employee
URL direttamente, funziona perfettamente bene, ma quando clicco sul pulsante "Mostra i dipendenti", ottengo il seguente errore:
Uncaught TypeError: Object #<Object> has no method 'addArrayObserver'
Probabilmente mi manca qualcosa da qualche parte, ma non sono esattamente sicuro di quale oggetto si riferisca l'errore proprio lì. Il mio hook del modello viene chiamato correttamente quando spingo il pulsante, come se navigassi inserendo manualmente l'url, quindi non capisco cosa sia esattamente diverso nei due casi citati.