stringTrim Knockout Utils tidak berfungsi saat bundling

Ketika saya menggabungkan file knockout js saya menggunakan ASP.NET MVC 4 dan menjalankan aplikasi saya dalam mode rilis (debug="false") fungsi knockout utils tidak berfungsi.

Saya mencoba menggunakan:

if (ko.utils.stringTrim(searchTerms) == "")
       return;

Tapi saya mendapatkan kesalahan, Objek belum memiliki metode 'stringTrim'

Bundel saya terlihat seperti ini:

bundles.Add(new ScriptBundle("~/bundles/scripts").Include(
    "~/Scripts/jquery-{version}.js"
    ));

bundles.Add(new ScriptBundle("~/bundles/ko").Include(
    "~/Scripts/knockout-2.3.0.js",
    "~/Scripts/knockout.mapping-latest.js"
    ));

Saya menarik bundelnya seperti ini:

@Scripts.Render("~/bundles/scripts")
@Scripts.Render("~/bundles/ko")
@RenderSection("scripts", required: false)

Ada ide?


person Felix    schedule 20.07.2013    source sumber
comment
apa yang Anda dapatkan jika mengetik ko di konsol chrome Anda? apakah kamu yakin kamu sudah KO?   -  person Ali Habibzadeh    schedule 20.07.2013
comment
Ya karena model tampilan dan pengikatan saya berfungsi, saya lupa memasukkannya ke dalam pertanyaan.   -  person Felix    schedule 21.07.2013


Jawaban (1)


Masalahnya adalah ko.utils.stringTrim saat ini tidak teridentifikasi sebagai metode yang diekspor, jadi ketika Knockout diperkecil menggunakan Closure Compiler Google, nama metode ini akan diperkecil.

Dalam versi rilis, Anda akhirnya menggunakan file yang diperkecil daripada versi debug.

Logika untuk stringTrim di Knockout adalah:

    stringTrim: function (string) {
        return string === null || string === undefined ? '' :
            string.trim ?
                string.trim() :
                string.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, '');
    }

Anda dapat memilih untuk menambahkannya ke proyek Anda.

Jika Anda hanya mendukung browser yang lebih baru (IE9+), Anda cukup menggunakan string.trim(), jika tidak, Anda berpotensi menambahkannya di browser lama seperti yang dijelaskan di sini: https://developer.mozilla.org/id-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim

person RP Niemeyer    schedule 20.07.2013