2013-05-07 70 views
0

當模型爲isNew時,如何在deactivate路由掛鉤中執行get('transaction').rollback()deleteRecord()模型的路由掛鉤?我無法弄清楚如何從鉤子中訪問模型。從路由中的停用掛鉤觸發model.get('transaction')。rollback()

app.js

App.Router.map(function() { 
    this.resource('users', function() { 
    this.route('new'); 
    }) 
}); 

App.UsersNewRoute = Ember.Route.extend({ 
    model: function() { 
    return App.User.createRecord(); 
    }, 

    activate: function() { 
    this.controllerFor('users').set('newUserCreate', true); 
    }, 

    deactivate: function() { 
    this.controllerFor('users').set('newUserCreate', false); 
    } 
}); 
+1

不知道,但也許你可以使用this.currentModel https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/ lib/system/route.js#L254 – 2013-05-07 20:55:13

回答

3

這是做模型上的rollback()代碼:

deactivate: function() { 
    this.controllerFor('users').set('newUserCreate', false); 
    if (this.currentModel.get('isNew')) { 
    this.currentModel.get('transaction').rollback(); 
    } 

特別感謝@ sly7_7解決這個。

+0

'if(this.currentModel.get('isNew')&& this.currentModel.get('isSaving')== false)'也可能很有趣。 – wintermeyer 2013-05-07 21:12:39

+0

+1,現在我確定它有效:) – 2013-05-07 21:27:18

0

路由對象瞭解其控制器。你也應該能夠做到這一點:

deactivate: function() { 
    var model = this.get('controller.content'); 
    if (model.get('isNew')) { 
    model.deleteRecord(); 
    }; 
}; 
相關問題