0

对于使用LSA的本地存储适配器,我现在想更新模型中 id 为“ab12”的模型,但我不知道如何操作。我的模型是:

OlapApp.AxisModel = DS.Model.extend({
  uniqueName: DS.attr('string'),
  name: DS.attr('string'),
  hierarchyUniqueName: DS.attr('string'),
  type: DS.attr('string'),//row,column,filter
  isMeasure: DS.attr('boolean'),
  isActive:DS.attr('boolean'), //is added to one of type 
  orderId: DS.attr('number')
});

我的控制器我正在尝试:

this.get('store').updateRecord('axisModel',{
   id:item.get('id'),
   orderId:index
});

但我得到一个错误:

Uncaught TypeError: Object [object Object] has no method 'updateRecord' 

我需要更新模型中的 orderId。如果我使用 commit() 我得到一个错误:

 updateSortOrder: function(indexes) {
        var store = this.get('store');
        this.get('getRowItem').forEach(function(item) {
            var index = indexes[item.get('id')];
            if($.isEmptyObject(indexes)) index=0;
            item.set('orderId', index);
            store.commit();
        }, this);
    },

错误是:

Uncaught TypeError: Object [object Object] has no method 'commit' 

这是getRowItem

getRowItem: function(controller, model) {
 return this.get('model').filterProperty('type', 'row');
}.property('model.@each.type'),
4

1 回答 1

0

您可以使用DS.Model.save(). 在您的控制器中:

var model = this.get('content');
model.setProperties({
   id:item.get('id'),
   orderId:index
});
model.save().then(function() {
  alert('saved');
}, function() {
  alert('not saved');
});

这是假设Route的 model() 方法返回了实例,或者您可以find()先使用:

this.get('store')
.find('axisModel', id)
.then(function(model) {
  model.save().then(...)
});
于 2013-09-25T00:55:59.103 回答