2013-07-20 79 views
1

當我使用ASP.NET MVC 4捆綁我的knockout js文件並在發佈模式下運行我的應用程序(debug =「false」)時,knockout utils函數不起作用。stringTrim Knockout實用程序捆綁時不起作用

我試圖使用方法:

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

但我得到的錯誤,對象有沒有方法 '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" 
    )); 

我m拉如下這樣捆:

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

有什麼想法?

+0

如果你輸入你怎麼弄在你的Chrome控制檯中鍵入?你確定你有淘汰賽嗎? – XGreen

+0

是的,因爲我的視圖模型和綁定正在工作,所以忘了在這個問題中寫下來。 – Felix

回答

3

問題是ko.utils.stringTrim目前未被識別爲導出方法,所以當使用Google的Closure Compiler縮小Knockout時,會縮小此方法的名稱。

在發佈版本中,最終使用縮小文件而不是調試版本。

在淘汰賽的stringTrim的邏輯是:

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