为什么我的数据绑定不起作用
Why my data-binding doesn't work?
我正在开发一个SharePoint 2010 Web 部件。我会使用挖空框架进行数据绑定。
我有一个带有此代码的 ascx:
<table>
<tr>
<td>
<label id="lblLastMaintenanceDate">Data ultima manuntenzione:</label>
</td>
<td>
<span id="lastMaintenanceDate" data-bind="text: lastMaintenanceDate"></span>
</td>
</tr>
<tr>
<td>
<label id="lblMaintenanceDescription">Descrizione manuntenzione:</label>
</td>
<td>
<span id="MaintenanceDescription" data-bind="text: maintenanceDescription"></span>
</td>
</tr>
<tr>
<td>
<label id="lblConcept">Concept:</label>
</td>
<td>
<span id="Concept" data-bind="text: concept"></span>
</td>
</tr>
</table>
在 document.ready() 中,我编写了以下代码:
$(document).ready(function () {
ko.applyBindings(ShopViewModel);
});
这是我的观点模型:
var ShopViewModel = {
lastMaintenanceDate : ko.observable(),
maintenanceDescription : ko.observable(),
concept : ko.observable(),
GetShopDetail : function (val1) {
$.ajax({
type: "GET",
url: "../_layouts/MyProject/MasterPage.aspx/GetDetails?par1=" + val1,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{}",
cache: false,
async: false,
success: function (result) {
var oJson = eval("(" + result['d'] + ")");
if (oJson.Success) {
var result = oJson.Data;
if (result) {
this.lastMaintenanceDate = String(result.LastMaintenanceDate);
this.maintenanceDescription = String(result.MaintenanceDescription);
this.concept = String(result.SyConceptId);
}
}
else {
WriteToConsole(oJson.Error);
customAlert(oJson.Error, "Error");
}
}
})
}
}
我用这段代码调用GetShopDetail函数:
ShopViewModel.GetShopDetail(val1);
我的问题是数据绑定不起作用。
你可以帮我吗?
谢谢
两个原因:
-
因为 ajax 回调中的
this
不是视图模型。如果需要,请使用bind
-
因为您要将可观察量替换为原始属性。相反,设置可观察量的值
所以:
success: function (result) {
var oJson = eval("(" + result['d'] + ")");
if (oJson.Success) {
var result = oJson.Data;
if (result) {
// ************** Change on next three lines
this.lastMaintenanceDate(String(result.LastMaintenanceDate));
this.maintenanceDescription(String(result.MaintenanceDescription));
this.concept(String(result.SyConceptId));
}
}
else {
WriteToConsole(oJson.Error);
customAlert(oJson.Error, "Error");
}
}.bind(this) // <===== Change here
Re #2,我建议完成淘汰教程,因为这是KO最基本的方面之一。
旁注:不要使用 eval
来解析 JSON。使用 JSON.parse
解析 JSON。或者$.parseJSON
.
相关文章:
- $http中的Angular 1数据绑定承诺不起作用
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- 为什么我的数据绑定到一个计算函数不起作用(使用knockout.js和jade)
- 数据绑定禁用属性在 foreach 内的按钮中不起作用
- 数据绑定在带有输入标签的 AngularJS 中不起作用
- foreach:绑定不起作用 ko.mapping.fromJS 数据
- 数据绑定在特定情况下不起作用(AngularJS)
- Angularjs 双向数据绑定不起作用;$watch也不起作用
- AngularJS:双向数据绑定 - 带有ng重复的指令 - 不起作用
- 使用 D3js 时,带有 DOM 的 AngularJS 数据绑定不起作用
- Angularjs 双向数据绑定不起作用
- AJAX 发布到挖空.js数据绑定不起作用
- 对话数据绑定不起作用
- 绑定数据在 d3.js 中不起作用
- AngularJS数据绑定到按钮不起作用
- 为什么我的数据绑定不起作用
- Vue.js 数据绑定样式背景图像不起作用
- 如何在不破坏角度数据绑定的情况下更新集合中的项
- javascript不会将数据绑定到HTMLSelect元素
- 第一次单击按钮时,它不会将数据绑定到表中