stringTrim Knockout Utils ไม่ทำงานเมื่อรวมกลุ่ม

เมื่อฉันรวมไฟล์ js ที่น่าพิศวงโดยใช้ ASP.NET MVC 4 และรันแอปพลิเคชันของฉันในโหมดรีลีส (debug = "false") ฟังก์ชัน utils ที่น่าพิศวงจะไม่ทำงาน

ฉันกำลังพยายามใช้:

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

แต่ฉันได้รับข้อผิดพลาด Object ไม่มีวิธี 'stringTrim'

การรวมกลุ่มของฉันมีลักษณะดังนี้:

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"
    ));

ฉันกำลังดึงมัดในลักษณะนี้:

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

มีความคิดอะไรบ้าง?


person Felix    schedule 20.07.2013    source แหล่งที่มา
comment
คุณจะได้อะไรถ้าคุณพิมพ์ ko ในคอนโซล Chrome คุณแน่ใจหรือว่าคุณแพ้น็อก?   -  person Ali Habibzadeh    schedule 20.07.2013
comment
ใช่ เนื่องจากโมเดลวิวและการผูกของฉันใช้งานได้ ลืมใส่คำถามนั้นลงไป   -  person Felix    schedule 21.07.2013


คำตอบ (1)


ปัญหาคือขณะนี้ ko.utils.stringTrim ไม่ได้ถูกระบุว่าเป็นวิธีการส่งออก ดังนั้นเมื่อ Knockout ถูกย่อขนาดให้เล็กลงโดยใช้ Closed Compiler ของ Google ชื่อของวิธีนี้จะถูกย่อขนาดลง

ในเวอร์ชันรีลีส คุณจะต้องใช้ไฟล์ที่ย่อขนาดแทนที่จะเป็นเวอร์ชันดีบั๊ก

ตรรกะสำหรับ stringTrim ใน Knockout คือ:

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

คุณสามารถเลือกที่จะเพิ่มลงในโครงการของคุณได้

หากคุณรองรับเฉพาะเบราว์เซอร์รุ่นใหม่ (IE9+) คุณสามารถใช้ string.trim() มิฉะนั้นคุณอาจเพิ่มลงในเบราว์เซอร์รุ่นเก่าตามที่อธิบายไว้ที่นี่: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim

person RP Niemeyer    schedule 20.07.2013