Durandaljs和knockoutjs - 数据绑定不起作用

时间:2013-10-20 21:04:18

标签: knockout.js durandal

我会尽量简洁。我正在使用DurandalJs,HotTowel SPA模板。我添加了以下viewmodel

define(['services/logger'], function (logger) {
    title = 'Content';
    unpublishedContent = ko.observable('default');

    activate = function() {
        logger.log(title + ' View Activated', null, title, true);
        return true;
    }

    unpublishedContent.subscribe(function (newValue) {
        logger.log('New value is: ' + newValue);
    });
    return {
        activate: activate,
        title: title,
        unpublishedContent: unpublishedContent,
        save: function (data) {
            self = this;
            logger.log(' Content saved - ' + self.unpublishedContent(), null, title, true);
        }
    };
});

以下视图

<section>
    <div class="row">
        <div class="col-md-4">Left section</div>
        <div class="col-md-8">
            <form class="form-horizontal" role="form" data-bind="submit: save">
                <div class="form-group">
                    <label for="html" class="col-lg-3">Html</label>
                    <div class="col-lg-9">
                        <textarea class="form-control" data-bind="text: unpublishedContent"></textarea>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-lg-3">Your HTML</label>
                    <label class="col-lg-9" data-bind="text: unpublishedContent"></label>
                </div>
                <div class="form-group">
                    <div class="col-lg-offset-3 col-lg-9">
                        <button type="submit" class="btn btn-default">Save</button>
                    </div>
                </div>

            </form>
        </div>
    </div>
</section>

这里有几点需要注意

  1. unpublishedContent属性a ko.observable
  2. unpublishedContent绑定到textarea和标签
  3. 使用save绑定绑定
  4. submit方法

    虽然我的提交绑定正在运行,但unpublishedContent上的绑定无效。我可能在某个地方犯了一个简单的错误,但我无法发现,可能需要第二双眼睛看着它。

    我已经启用了durandal的调试但是我没有从durandal的日志记录中得到很多,它没有显示与ko和第二个相关的任何内容,我认为我太新了,无法理解它的调试消息。

1 个答案:

答案 0 :(得分:2)

您在text上使用了错误的绑定(<textarea>)。您需要的是value绑定。

来自documentation

  

value绑定将关联的DOM元素的值与a链接起来   视图模型上的属性。这通常适用于表单   <input><select> <textarea> 等元素。

因此请将您的观点更改为:

<textarea class="form-control" data-bind="value: unpublishedContent"></textarea>