밑줄 1.3.3 및 JQuery 1.7.1이있는 백본 1.1.2를 사용하여 3 개의 값 (x, y 및 z)을 사용하려면이 모델을 모듈 식 접근 방식을 사용하여 컬렉션의 컬렉션 및 컬렉션에 배치합니다. 다음Uncaught TypeError : 컬렉션에 모델을 추가 할 때 '[object Object]'속성이 정의되지 않음을 읽을 수 없습니다.
내 코드입니다 :
이
<code>
requirejs.config({
paths : {
app : '/app',
jquery : ["http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min"],
underscore : ["http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min"],
backbone : ["https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min"]
},
shim : {
jquery : {
deps : [],
exports : '$'
},
underscore : {
deps : [],
exports : '_'
},
backbone : {
deps : ['jquery', 'underscore'],
exports : 'Backbone'
}
}
});
</code>
main.js를 app.js
<code>
define(function(require) {
var DataSet = require('./model/DataModel.js');
var DataCollection = require('./collection/DataCollection.js');
var DataView = require('./view/DataViews.js');
});
</code>
DataModel.js
<code>
define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {
var DataSet = Backbone.Model.extend({
initialize : function() { xVal:0; yVal:0; zVal:0;
alert("at model");
},
defaults : {
xVal : 0,
yVal : 0,
zVal : 0
}
});
return DataSet;
});
</code>
DataCollection.js
<code>
define(['jquery', 'underscore', 'backbone', '../model/DataModel.js'], function($, _, Backbone, DataSet) {
var DataSetCollection = Backbone.Collection.extend({
model : DataSet,
view : null,
initialize : function() {
},
constructor : function() {
console.log('Book\'s constructor had been called');
}
});
return DataSetCollection;
});
</code>
DataView.js
<code>
define(['jquery', 'underscore', 'backbone', '../collection/DataCollection.js', '../model/DataModel.js'], function($, _, Backbone, DataCollection, DataSet) {
// ... , /collection/DataCollection.js
DataView = Backbone.View.extend({
tagName : 'li',
events : {
'click #add-input' : 'getAxisValues',
},
initialize : function() {
alert("Initializing View");
//this.cars = new CarsCollection;
this.dataCollection = new DataCollection;
_.bindAll(this, 'render');
},
getAxisValues : function() {
/*
var xVal = $('#inputX').val();
var yVal = $('#inputY').val();
var zVal = $('#inputZ').val();*/
//adding random values for now for testing
var dataSet = new DataSet({
xVal : 4,
yVal : 5,
zVal : 6
});
alert("Adding values to collection " + dataSet.cid);
this.dataCollection.push(dataSet);
},
render : function(model) {
alert("Rendering View");
}
});
var view = new DataView({
el : '#FirstShow'
});
return view;
});
</code>
Router.js 파일이 지금과 같은 비어있는 프로젝트에서 나중에 사용됩니다 5,. 내가 갖는
오류 내 코드에서
Uncaught TypeError: Cannot read property '[object Object]' of undefined backbone.js:806
i.extend.get backbone.js:694
i.extend.set backbone.js:638
i.extend.add backbone.js:776
i.extend.push DataViews.js:32
Backbone.View.extend.getAxisValues jquery.min.js:3
f.event.dispatch jquery.min.js:3
f.event.add.h.handle.i jquery.min.js:3
이며, 오류가 다음 줄에 :
this.dataCollection.push (와 DataSet);
은 또한 다음과 같은 이전this.dataCollection.add (데이터 집합을) 시도했다;
감사합니다.
: 정의되지 않은 재산 'C4'를 읽을 수 없습니다 그것은 C1 시작 후 C2 등 : catch되지 않은 형식 오류가 매번 추가 입력 버튼을 클릭하면 새 모델이 만들어졌습니다. 백본의 최신 버전을 사용하면 오류가 언급 된 것과 같습니다. –