我有一个viewmodel如下:
define(
['jquery', 'knockout', 'knockout.mapping', 'data/data', 'infra/store', 'infra/util', 'nls/nls', 'models/models'],
function ($, ko, mapping, data, store, util, resources, models) {
var
post = {},
getPost = function (param) {
$.when(data.deferredRequest('postDetail', param.id))
.done(function (result) {
mapping.fromJS(result, {}, post);
});
};
return {
post : post,
getPost: getPost
};
});
以及上面的html文件如下
<section id="section-post-detail" class="view">
<div class="page-header">
<label data-bind="text: post.title"></label>
</div>
</section>
我将viewmodel应用于html文件,但是html中的title标签没有显示任何值,即使post对象中的title属性有值。
我错过了什么吗?
答案 0 :(得分:2)
应该是这样的:
<label data-bind="text: post().title"></label>
因为post属性是一个可观察的,所以在尝试读取子属性之前调用post()作为函数(获取其当前值)非常重要。