2013-08-19 65 views
0

從'工作'路線我試圖轉換到'職業'路線使用下面的代碼。emberjs:transitionToRoute錯誤沒有方法'addArrayObserver

<script type="text/x-handlebars" data-template-name="job"> 
    <button {{action 'backToCareers' this}}>Back</button> 
</script> 

與下列控制器給出 '未捕獲的類型錯誤:對象#沒有方法 'addArrayObserver'' 錯誤。

CareerApp.JobController = Ember.ObjectController.extend({ 
    backToCareers: function(){ 
     this.transitionToRoute('careers'); 
    } 
}); 

如果我改變代碼(見下文),以提供模型對象中的誤差變爲「未捕獲更多的上下文對象被傳遞之外還有用於路線動態片段:職業

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

其中是'CareersRouter'? – wedens

+0

「職業生涯」路線不包含任何動態細分,因此this.transitionToRoute('careers');是要走的路。用CareerApp.CareersRoute更新這個問題。 – andrei1089

+0

我已添加CareersRoute和CareersController的代碼 – amique

回答

2

模型鉤子將返回一個數組,但你返回一個jQuery承諾對象。 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

。當你穿過jobsCarreersController,這其中需要有一個ArrayController,也許你將它定義手動

+0

CareersController已經是明確定義的ArrayController。請參閱最新的問題。我已經添加了CareersController的代碼 – amique