如何从html访问viewmodel中的属性?

时间:2012-12-09 12:39:15

标签: knockout.js

我有一个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属性有值。

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

应该是这样的:

<label data-bind="text: post().title"></label>

因为post属性是一个可观察的,所以在尝试读取子属性之前调用post()作为函数(获取其当前值)非常重要。