function setPanodata()
在保存前准备panodata
:
if (confirm('Are you sure you want to update this?')) {
var query = new AV.Query('PanoramaData')
query.equalTo('roomModelId', currentPanoId)
query.find().then(function(avpds) {
var addedAVs = []
var unsavedPDs = []
var unchangedPDs = _.filter(avpds, function(avpd) {
return _.find(scope.panodatas, {
objectId: avpd.id
})
})
_.each(unchangedPDs, function(unchangedPD) {
// Offset x and y before save
unchangedPD.set('x', offsetX(scope.panodatas[unchangedPD.get('index')].x))
unchangedPD.set('y', offsetY(scope.panodatas[unchangedPD.get('index')].y))
unsavedPDs.push(unchangedPD)
})
var addedPds = _.filter(scope.panodatas, function(pd) {
return !pd.objectId
})
_.each(addedPds, function(point) {
var Panodata = AV.Object.extend('PanoramaData')
var panodata = new Panodata()
addedAVs.push(setPanodata(panodata))
})
unsavedPDs = unsavedPDs.concat(addedAVs)
console.log(unsavedPDs)
saveAllPanodatas(unsavedPDs)
})
}
function setPanodata(panodata) {
panodata.set('index', point.index)
panodata.set('x', offsetX(point.x))
panodata.set('y', offsetY(point.y))
panodata.set('roomModelId', scope.pano.id)
panodata.set('panoDataRotate', 0)
panodata.set('differentLayout', false)
panodata.set('panoCount', 6)
panodata.set('type', 'VRoom')
console.log('PANODATA', panodata)
return panodata
}
最初,我将其内容放在_.each(addedPds, function(point) {
内,但决定将其转换为使代码更清晰的函数。
但是,console.log('PANODATA', panodata)
不会记录任何内容。因此setPanodata()
_.each(addedPds, function(point) {
为什么会这样?
答案 0 :(得分:2)
setPanodata使用point,但是你没有将点传递给函数。试试这个:
_.each(addedPds, function(point) {
var Panodata = AV.Object.extend('PanoramaData');
var panodata = new Panodata();
addedAVs.push(setPanodata(panodata, point));
});
function setPanodata(panodata, point) {
panodata.set('index', point.index)
panodata.set('x', offsetX(point.x))
panodata.set('y', offsetY(point.y))
panodata.set('roomModelId', scope.pano.id)
panodata.set('panoDataRotate', 0)
panodata.set('differentLayout', false)
panodata.set('panoCount', 6)
panodata.set('type', 'VRoom')
console.log('PANODATA', panodata)
return panodata
}