当我使用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)
有什么想法吗?
答案 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