我有一个简单的WebApi项目,用于处理各种格式的返回数据。我正在尝试使用KnockoutJs在前端使用数据,但是我遇到了一个变量未定义错误,我似乎无法理解为什么。以下是我正在处理的简单代码。请随时指出错误。谢谢

控制器格式

[httpGet]
public Object Data
{
  return new {
   Time: DateTime.now,
   Text: "<b>Salut</b>",
   Count: 1
  };
}


JS前端

<script>
    $(document).ready(function(){
    $.ajax("/api/formats", {
       success: function(data){
          dataObject = ko.observable(data);
          ko.applyBindings();
       }
    };
 });




的HTML

    <tbody>
       <tr>
         <td>Time</td>
         <td data-bind="text: dataObject().Time">
         <td>Text</td>
         <td data-bind="text: dataObject().Text">
      </tr>
   </tbody>

最佳答案

首先,您的变量dataObject不具有TimeText属性,因此您应按以下方式在代码中对其进行检查:



var dataObject = ko.observable();
ko.applyBindings();

function doBinding() {
    var data = {
        Time: "XYZ",
        Text: "<b>Salut</b>",
        Count: 1
    };

    dataObject(data);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<div>

  <div data-bind="text: dataObject() ? dataObject().Time : 'No Data'"></div>
  <div data-bind="text: dataObject() ? dataObject().Text : 'No Data'"></div>

<div>

<button onclick="doBinding()">binding</button>

关于javascript - knockout :未定义dataObject,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48737046/

10-09 14:38