0

当我在我的代码上使用 ember-1.0.0-pre.4.min.js时,我从 Chrome 的控制台调试器中收到以下错误:

未捕获的类型错误:对象原型可能只是一个对象或 null ember-1.0.0-pre.4.min.js:18 未捕获的类型错误:无法调用未定义的方法“扩展”

代码:

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 时一切正常。

我究竟做错了什么?

我应该使用哪个版本?

提前致谢。

4

1 回答 1

0

在没有详细研究您的代码的情况下,我的猜测是路由 API。它在 pre2 和 pre3 之间完全改变了,因此不向后兼容。看看http://emberjs.com/guides/routing/

因此,您确实需要将您的代码“迁移”到新版本。它不仅适用于新版本。

请注意,API 已被 pre4 冻结。因此,在 ember js 的下一个主要版本之前,不应再出现 API 向后兼容性问题。

于 2013-01-29T22:55:29.600 回答