【发布时间】:2012-09-26 08:05:57
【问题描述】:
我继承了一个用 Ember 0.9.8.1 编写的代码库 在某些情况下,它可能非常慢。 我正在缩小为什么它很慢。 我注意到以下内容。
调用 ArrayController 中的函数来加载数据。 要加载从后端获取 json 的数据(快速),然后为每一行创建一个(先前定义的)Ember.Object(慢速)并将其推送到 ArrayController 的 content[]。
例子:
App.ExOb = Ember.Object.extend({
data1: null,
data2: null,
func1: function () { // statements }.property('data1').cacheable()
func2: function () { // statements }.property('data2').cacheable()
..etc..
})
App.lotsOfData = Ember.ArrayController.create({
content: [],
loaddata: function() {
var self=this;
get_data().forEach(function (row, index) {
var d = App.ExOb.create(row.data);
self.pushObject(d);
}
}
})
我试图弄清楚为什么 Ember.Object 的创建和推送很慢。 我注意到的是,在创建对象时(在 App.ExOb.create() 示例中),对象的每个属性函数(在示例 func1() 和 func2() 中)都会被调用。
我尝试了一小段 ember 代码来了解为什么会发生这种情况,但似乎无法模拟。我唯一能看到正在执行的计算属性是当我对该属性执行 get() 时。
谁能告诉我(或指出我错过的文档)何时执行计算属性函数(当然除了执行 get() :-) )?
编辑: 到目前为止,我发现执行计算属性的原因如下: 1.直接调用/使用属性 2. 在浏览器中显示的车把模板中使用属性。
【问题讨论】:
标签: ember.js