gpt4 book ai didi

ember.js - 当我执行 App.reset 时,为什么我的reopenClass 状态不会重置?

转载 作者:行者123 更新时间:2023-12-02 06:11:42 25 4
gpt4 key购买 nike

我有一个简单的模型类,我用它来存储一些全局状态

  App.Person = Ember.Object.extend({
firstName: '',
lastName: ''
});

App.Person.reopenClass({
people: [],
add: function(hash) {
var person = App.Person.create(hash);
this.people.pushObject(person);
},
remove: function(person) {
this.people.removeObject(person);
},
find: function() {
var self = this;
$.getJSON('/api/people', function(response) {
response.forEach(function(hash) {
var person = App.Person.create(hash);
Ember.run(self.people, self.people.pushObject, person);
});
}, this);
return this.people;
}
});

当我使用 RC6 和 ember-testing 调用 App.reset() 时,我注意到全局人员数组中的任何状态都在测试之间保持不变。我确实看到一个日志显示在测试之间调用了拆卸,它只是没有清除人数。如何在 QUnit 拆解中重置它?
  module('integration tests', {                                                
setup: function() {
Ember.testing = true;
this.server = sinon.fakeServer.create();
this.server.autoRespond = true;
Ember.run(App, App.advanceReadiness);
},
teardown: function() {
this.server.restore();
App.reset(); //won't kill that global state ...
}
});

更新

如果你想在 RC6 中模拟“/”路由,一个错误会阻止你的模型钩子(Hook)在你模拟 xhr 后再次触发(我希望在 RC7+ 中看到这个问题)

https://github.com/emberjs/ember.js/issues/2997

最佳答案

App.reset 只销毁 Ember 生成的对象。类不受影响。

您将需要扩展重置方法并手动执行此清理。

App = Ember.Application.create({
reset: function() {
this._super();
App.Person.people = [];
}
});

关于ember.js - 当我执行 App.reset 时,为什么我的reopenClass 状态不会重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17584646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com