0

コードでember-1.0.0-pre.4.min.jsを使用すると、Chromeのコンソールデバッガーから次のエラーが発生します。

Uncaught TypeError:オブジェクトプロトタイプはObjectまたはnullのみである可能性がありますember-1.0.0-pre.4.min.js:18 Uncaught TypeError:undefinedのメソッド'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に切り替えると、すべてが正常に機能します。

私は何が間違っているのですか?

どのリリースを使用する必要がありますか?

前もって感謝します。

4

1 に答える 1

0

コードを詳細に調べていなければ、ルーティングAPIだと思います。pre2とpre3の間で完全に変更されているため、下位互換性はありません。http://emberjs.com/guides/routing/をご覧ください

したがって、コードを新しいバージョンに「移行」する必要があります。新しいバージョンで動作するだけではありません。

APIがpre4でフリーズされていることに注意してください。したがって、APIの下位互換性の問題は、次のメジャーバージョンのemberjsまでは発生しないはずです。

于 2013-01-29T22:55:29.600 に答える