绑定挖掘数据模型中的特殊字符

时间:2013-05-21 16:27:01

标签: javascript knockout.js special-characters

我有一个带有特殊字符的数据模型(度数符号)..所以该属性包含以下内容:“48 ° f”。但是,当UI更新此数据时,我会看到“°”,而不是度数符号。我也试过“°”,但这也不起作用。

如何在数据模型中添加特殊字符并将其显示在UI上?

2 个答案:

答案 0 :(得分:8)

您应该使用html绑定:

<span data-bind="html: test"></span>

var vm = {
    test: ko.observable("48 &deg; f")
};

ko.applyBindings(vm);

这是一个工作小提琴:http://jsfiddle.net/svu82/

在KO文档中阅读更多内容:http://knockoutjs.com/documentation/html-binding.html

答案 1 :(得分:0)

我认为保存数据库中编码的数据不是一个好主意。

使用ASPNET / MVC C#(使用Razor)将数据库中的信息绑定到文本区域的值。我正在使用c#,并且在设置observable时必须执行类似服务器端的操作。

替换字符的示例,以便值绑定正常工作。

model.Description  = ko.observable(
   @html.Raw(
             Model.Description.Replace("\"", "\\\"")
                .Replace("'", "\\\'")
                .Replace(Environment.NewLine, "\\r\\n")
            )
);

扩展方法可以使绑定更好。

    public static IHtmlString HtmlEscape(this String str)
    {
        if (String.IsNullOrEmpty(str))
            return new HtmlString("");
        var html = ((System.Web.Mvc.WebViewPage)
                       WebPageContext.Current.Page).Html;

        return html.Raw(
             str.Replace("\"", "\\\"")
                .Replace("'", "\\\'")
                .Replace(Environment.NewLine, "\\r\\n"));
    }

和绑定

Description: ko.observable("@(Model.Description.HtmlEscape())");

这对我有用。