stringTrim Knockout Utils在捆绑时不工作

时间:2013-07-20 12:31:20

标签: asp.net-mvc-4 knockout.js bundling-and-minification

当我使用ASP.NET MVC 4捆绑我的knockout js文件并在发布模式下运行我的应用程序(debug =“false”)时,knockout 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)

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

问题是ko.utils.stringTrim目前尚未被识别为导出方法,因此当使用Google的Closure Compiler缩小Knockout时,此方法的名称会缩小。

在发布版本中,您最终使用的是缩小文件而不是调试版本。

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