1

当我使用 ASP.NET MVC 4 捆绑我的淘汰赛 js 文件并以发布模式 (debug="false") 运行我的应用程序时,淘汰赛实用程序函数不起作用。

我正在尝试使用:

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

我正在像这样拉包:

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

有任何想法吗?

4

1 回答 1

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

于 2013-07-20T13:26:25.640 回答