微风没有检测到变化

时间:2014-01-15 16:09:16

标签: javascript knockout.js breeze

使用durandal / require / breeze / knockout

当我更改表格中文本框中的值时。微风没有发现变化。 manager.hasChanges()始终返回false。为什么微风没有发现这种变化?

控制器

    [HttpGet]
    public object Lookups()
    {
        var categories =  _contextProvider.Context.KMS_Categories;
        var tags = _contextProvider.Context.KMS_Tag;
        return new { categories, tags };
    }

获取数据

    var manager = configureBreezeManager(),
    EntityQuery = breeze.EntityQuery;

    return EntityQuery.from('Lookups')
    .using(manager).execute()
    .fail(queryFailed);

保存更改功能

   var saveChanges = function () {
    return manager.saveChanges()
    .then(saveSucceded)
    .fail(saveFailed)

    function saveSucceded(saveResult) {
        log('Saved data successfully', saveResult, true);
    }

    function saveFailed(error) {
        var msg = 'Save failed: ' + error.message;
        logError(msg, error);
        error.message = msg;
        throw error;
    }
}

显示数据的表格和更改的位置

  <table class="table table-bordered table-hover table-striped table-condensed">
            <thead>
                <tr>
                    <th>Tags</th>
                </tr>
            </thead>
            <tbody data-bind="foreach: adminTags">
                <tr>
                <td ><input class="form-control" data-bind="value: $data.Tag()" /></td>
                </tr>
            </tbody>
        </table>

1 个答案:

答案 0 :(得分:3)

您的绑定是无关紧要的,您需要写$data.Tag

<input class="form-control" data-bind="value: $data.Tag" />

通过编写$data.Tag(),您不会绑定到您的可观察属性本身,但是您直接绑定到其基础值,这使您的绑定有效单向

演示JSFiddle