我有一个简单的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
不具有Time
和Text
属性,因此您应按以下方式在代码中对其进行检查:
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/