Как я могу откатить принадлежащий модели

DEBUG: ------------------------------- ember-1.9.1.js:3935
DEBUG: Ember      : 1.9.1 ember-1.9.1.js:3935
DEBUG: Ember Data : <%= versionStamp %> ember-1.9.1.js:3935
DEBUG: Handlebars : 2.0.0 ember-1.9.1.js:3935
DEBUG: jQuery     : 1.11.1 ember-1.9.1.js:3935
DEBUG: ------------------------------- 

Я должен моделировать так же, как это:

Hwv.Car = DS.Model.extend({
    number: DS.attr('string'),
    owner: DS.belongsTo('user')
});
Hwv.User = DS.Model.extend({
    name: DS.attr('string'),
    phone: DS.attr('string'),
    email: DS.attr('string')
});

тогда я использую выбор входа в шаблоне:

{{#if isEditing}}
  {{view "select" id = "owner" class="form-control"
    content=owners
    optionLabelPath="content.name"
    optionValuePath="content.id"
    prompt="--please select a user--"
    selection=selectedOwner
  }}
  <span class="glyphicon form-control-feedback"></span>
{{else}}
  <p class="form-control-static">{{owner.name}}</p>
{{/if}}

и мой контроллер такой:

Hwv.CarController = Ember.ObjectController.extend({
    needs:["application","session"],
    isEditing:false,
    isNew:false,
    owners:function(){
        var model = this.get('model'),
            store = this.store;
        return store.filter('user', function (user) {
            return true;
        });
    }.property(),
    selectedOwner:function(k,v){
        var model = this.get('model');
        if(!model){
            return;
        }
        if (v === undefined) {
            return model.get("owner");
        } else {
            debugger;
            model.set('owner', v);
            debugger;
            return v;
        }
    }.property("model.owner"),
    selectedOwnerDidChange: function() {
        debugger;
        //if i remove this row ,the car model can't be dirty when the owner of the car is changed by the select input.
        this.get('model').send('becomeDirty');
    }.observes('selectedOwner'),
    actions:{
        cancel:function(){
            //this row will work when i change the car number only and then click the cancel button
            //but when i change the car owner by the select input,the car model can't rollback successfully.
            this.get("model").rollback();
        }
    }
});

Кажется, проблема заключается в том, что данные ember не могут успешно выполнить откат модели ownTo, и даже они не могут пометить грязное свойство модели именно тогда, когда свойство ownTo изменилось.

Мой вопрос: как я могу написать код, чтобы исправить проблему отката с владельцем автомобиля, принадлежащим модели, как и выше.

0 ответов

Я искал проблему на нашем сайте, но не могу найти решение, одно из которых, например, " Как откатить изменения отношений в EmberData", в этом случае имеет отношение hasMany, но в моем случае есть только принадлежит.

Поздно на вечеринку, но здесь мы идем:

Я создал аддон, который решает эту проблему. Просто позвони rollbackAttributes() и это откатит ваши отношения тоже

https://www.npmjs.com/package/ember-rollback-relationships

Другие вопросы по тегам