使用ember-1.0.0-pre.4.min.js时出错

时间:2013-01-29 22:22:26

标签: ember.js

当我使用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时,一切正常。

我做错了什么?

我应该使用哪个版本?

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

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

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