带有HTML标记的字符串在foreach中无法识别

时间:2014-07-31 18:59:51

标签: javascript html json html5 knockout.js

我有一个字符串作为JSON对象中的属性。此字符串包含标签,以便为其设置一些样式。我面临的问题是,无论编写良好的HTML标签,它都没有得到预期的结果。我要改变编程这部分的方式吗?

Javascript - Viewmodel:

function viewModel() {

   var self = this;
   self.text = ko.observableArray();
   self.text = ko.computed(function() {
           $.ajax({
               type: "GET",
               async: false,
               contentType: "application/json; charset=utf-8",
               global: false,
               url: "../../webresources/myappresource/getitemdescription/001/102001/",
                    datatype: "json",
                    success: function(data) {
                        itemdata = data;
                    }
                });
                return itemdata;
            }, this);

            this.itemsList = ko.observableArray(itemdata);             
     };
  ko.applyBindings(new viewModel()); 

HTML +淘汰赛

  <tbody data-bind="foreach: itemsList"  name="myitems">
    <tr>
      <td>
          <input id="selectItem" type="checkbox">
      </td>
      <td>
          <h5 data-bind="text:itemDescription"></h5>
      </td>
   </tr>
  </tbody>

JSON对象结构:

[
    {
      "dscitem": " <b>Colour</b>: Green, <br/> <b>Weight</b>: 50.00,<br/> <b>Description</b>: suchitemdescription and so on,<br/> ",
      "skuitem": 110
    }
]

预期的结果是使用html标签增强的相同文本。相反,我得到的列表我想要的很酷,但显示的描述是没有任何样式的整个字符串,实际上,文本的方式与对象中的相同,纯粹的宇宙文本到应用程序-用户。关于这里发生了什么的任何想法?

1 个答案:

答案 0 :(得分:1)

问题是(除了代码段中的语法错误)您使用文本绑定而不是html binding

所以只需替换

<h5 data-bind="text:itemDescription"></h5>

<h5 data-bind="html:itemDescription"></h5>