ajax post 后淘汰 js 更新视图模型
Knockout js Update viewmodel after ajax post
我正在使用 knockout js 和 knockout 映射插件。
我的问题是调用 ajax post 我的视图 (ui) 没有更新。
只有当我重新加载页面时,数据才会更新。
<tbody data-bind="foreach: WorkData">
<td data-bind="text: id"></td>
<td data-bind="text: user_name"></td>
<button class="btn btn-xs btn-success" data-bind="click: $parent.postTmpData" role="button">
<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>
</button>
</tbody>
<script>
function ViewModel() {
var self = this;
var data = <?php echo json_encode($this->data); ?> ;
self.WorkData = ko.mapping.fromJS(data);
self.postTmpData = function(entry) {
$.post("<?php echo Config::get('URL'); ?>/work/confirmWorkPost/", entry, function(returnedData) {
ko.mapping.fromJS(returnedData, self);
})
}
}
ko.applyBindings(new ViewModel());
</script>
您要用 returnedData
替换 WorkData
吗?只有当它们处于相同的结构中时才有可能。在那种情况下,试试这个:
$.post("<?php echo Config::get('URL'); ?>/work/confirmWorkPost/", entry, function(returnedData) {
ko.mapping.fromJS({'WorkData': returnedData}, self);
})
这就是我的解决方案:
ko.mapping.fromJS(JSON.parse(returnedData), self.WorkData);
我正在使用 knockout js 和 knockout 映射插件。
我的问题是调用 ajax post 我的视图 (ui) 没有更新。 只有当我重新加载页面时,数据才会更新。
<tbody data-bind="foreach: WorkData">
<td data-bind="text: id"></td>
<td data-bind="text: user_name"></td>
<button class="btn btn-xs btn-success" data-bind="click: $parent.postTmpData" role="button">
<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>
</button>
</tbody>
<script>
function ViewModel() {
var self = this;
var data = <?php echo json_encode($this->data); ?> ;
self.WorkData = ko.mapping.fromJS(data);
self.postTmpData = function(entry) {
$.post("<?php echo Config::get('URL'); ?>/work/confirmWorkPost/", entry, function(returnedData) {
ko.mapping.fromJS(returnedData, self);
})
}
}
ko.applyBindings(new ViewModel());
</script>
您要用 returnedData
替换 WorkData
吗?只有当它们处于相同的结构中时才有可能。在那种情况下,试试这个:
$.post("<?php echo Config::get('URL'); ?>/work/confirmWorkPost/", entry, function(returnedData) {
ko.mapping.fromJS({'WorkData': returnedData}, self);
})
这就是我的解决方案:
ko.mapping.fromJS(JSON.parse(returnedData), self.WorkData);