在我與一個Rails後端骨幹應用的app.js文件,我發起了一個收集,並經過fetch()方法完成它設置爲集合上jobForm鑑於其檢索記錄。可以調用獲取而不是其他骨幹網收集方法
var app = {
init: function() {
this.collections.job = new this.Collections.job();
this.collections.job.fetch().complete(function(){
app.views.jobForm = new app.Views.jobForm({ collection : app.collections.job });
}
裏面的jobForm視圖(這是用戶輸入作業詳細信息視圖),我聽的表單上的提交,然後用收集來創建表單提交一份新的工作。
events : {
'submit form' : 'addDoc'
},
addDoc : function(e) {
e.preventDefault();
// app.collections.job.create({
console.log(this.collection);
this.collection.create({
job_title : this.$('.job_title').val(),
position : this.$('.position').val(),
company : this.$('.company').val(),
}, { error : _.bind(this.error, this) });
不過,我收到
Uncaught TypeError: Object [object Object] has no method 'create'
的代碼甚至沒有嘗試進行網絡請求,因爲它不認爲它具有創造方法的錯誤。您會注意到我在創建集合之前創建了一個集合的控制檯日誌,並且它返回了一組作業(這是在我將骨幹添加到應用程序之前創建的),因此它是一個集合。
child {cid: "c1", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
_changing: false
_pending: false
_previousAttributes: Object
attributes: Object
changed: Object
cid: "c1"
__proto__: Surrogate
constructor: function(){ return parent.apply(this, arguments); }
initialize: function() {
model: function(){ return parent.apply(this, arguments); }
url: "/jobs"
__proto__: Object
在控制檯中,我實例化一個新的集合,稱爲獲取,檢索到的一些成果,並試圖在它的一些其他的收集方法,如collection.at(0),被告知該對象沒有按」沒有方法'at'。
奇怪的是,這個代碼(鏈接到一個集合的形式),我從我的另一個工作骨幹的應用程序複製的代碼。所以,如果我能夠調用fetch();在實例化該對象之後,但不調用其他Backbone集合方法(例如「at」和「create」),我試圖調用此對象創建的對象,以及我可以如何解決該問題。 。
如果'this.collection.job'是你的實際徵收,嘗試'this.collection.job .create' – HungryCoder
我做了this.collection.create({...因爲我試圖調用col的create方法(這是視圖有一個引用)(這是我如何在我的其他應用程序中工作),而不是在實際集合的名稱上調用create(即,視圖被引用)。 this.collection.job.create)。但是,我嘗試了你的建議,並說:':無法讀取未定義的屬性'工作'。我認爲我的方式應該是它的工作方式。您可以通過執行this.model.render()來調用視圖實例化的集合/模型的方法。等等 – Leahcim