来自'工作'路线我正试图过渡到职业生涯'路线使用以下代码。
<script type="text/x-handlebars" data-template-name="job">
<button {{action 'backToCareers' this}}>Back</button>
</script>
以下控制器提供&#39; 未捕获的TypeError:对象#没有方法&#39; addArrayObserver&#39; &#39;错误。
CareerApp.JobController = Ember.ObjectController.extend({
backToCareers: function(){
this.transitionToRoute('careers');
}
});
如果我更改代码(见下文)以提供模型对象,则错误更改为&#39; 未捕获通过更多上下文对象,而不是路径的动态细分:职业&#39 ;
CareerApp.JobController = Ember.ObjectController.extend({
backToCareers: function(){
var jobs = CareerApp.Job.findAll();
this.transitionToRoute('careers', jobs);
}
});
以下是我的模型和路由器的代码
CareerApp.Job = Ember.Model.extend({
refNo: '',
title: ''
});
CareerApp.Job.reopenClass({
findAll: function(){
return $.getJSON("http://site/jobs").then(
function(response){
var jobs = Ember.A();
response.forEach(function(child){
jobs.pushObject(CareerApp.Job.create(child));
});
return jobs;
}
);
}
});
路由器代码
CareerApp.Router.map(function(){
this.resource('careers', {path: '/'});
this.resource('job', {path: '/jobs/:job_id'});
});
CareerApp.CareersRoute = Ember.Route.extend({
model:function(){
return CareerApp.Job.findAll();
}
});
CareerApp.CareersController = Ember.ArrayController.extend({
gradJobCount: function () {
return this.filterProperty('isExp', false).get('length');
}.property('@each.isExp')
});
答案 0 :(得分:2)
模型钩子应该返回一个数组,但是你返回一个jQuery promise对象。 findAll应该返回一个空数组,该数组在执行回调时被填充。
findAll: function() {
var jobs = [];
$.getJSON("http://site/jobs").then(function(response){
response.forEach(function(child){
jobs.pushObject(CareerApp.Job.create(child));
});
});
return jobs;
}
答案 1 :(得分:1)
当您将jobs
传递给CarreersController
时,此问题必须是ArrayController
,也许您必须手动定义