当我使用ember-1.0.0-pre.4.min.js on my code时,我从Chrome的控制台调试器中收到以下错误:
未捕获的TypeError:对象原型可能只是一个Object或null ember-1.0.0-pre.4.min.js:18 未捕获的TypeError:无法调用未定义的方法'extend'
代码:
Win = Em.Application.create({
View: {},
Model: {},
Controller: {}
});
Win.Model.ValuePair = Em.Object.extend({
id: null,
name: null
});
Win.View.BrandKeywordView = Em.TextField.extend({
keyDown: function () {
var value = this.get('value');
if (value) {
Win.Controller.BrandKeywordController.searchBrand(value);
console.log(Win.Controller.BrandKeywordController.content[0].id);
}
}
});
Win.Controller.BrandKeywordController = Em.ArrayProxy.create({
content: [],
searchBrand: function (brandName) {
var me = this;
$.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json; charset=utf-8',
url: 'brands/default.aspx/Search',
data: '{keyword:"' + brandName + '"}',
success: function (data) {
var brands = $.parseJSON(data.d);
me.content = [];
for (var i = 0, max = brands.length; i < max; i++) {
me.pushObject(Win.Model.ValuePair.create({ id: brands[i].Id, name: brands[i].Name }));
}
}
});
}
});
但是当我切换到ember-1.0.beta.2.min.js时,一切正常。
我做错了什么?
我应该使用哪个版本?
提前致谢。
答案 0 :(得分:0)
如果没有详细研究您的代码,我的猜测就是路由API。它在pre2和pre3之间完全改变,因此不向后兼容。看看http://emberjs.com/guides/routing/
因此,您确实需要将代码“迁移”到新版本。它不仅适用于新版本。
请注意,API已使用pre4冻结。因此,不应再出现API向后兼容性问题,直到下一个主要版本的ember js。