在代码中更改Breeze / Knockout实体属性

时间:2013-04-29 17:05:43

标签: knockout.js breeze single-page-application

没有看到任何其他问题,并且无法找到合适的资源,希望有人可以指出我正确的方向 -

var archiveParent = function () {
    var msg = 'Archive parent "' + parent().name() + '" ?';
    var title = 'Confirm Archive';
    isArchiving(true);
    return app.showMessage(msg, title, ['Yes', 'No'])
        .then(confirmArchive);

    function confirmArchive(selectedOption) {
        if (selectedOption === 'Yes') {
            parent().archived() === true;
            save().then(success).fail(failed).fin(finish);

            function success() {
                router.navigateTo('#/parents');
            }

            function failed(error) {
                cancel();
                var errorMsg = 'Error: ' + error.message;
                logger.logError(
                    errorMsg, error, system.getModuleId(vm), true);
            }

            function finish() {
                return selectedOption;
            }
        }
        isArchiving(false);
    }

};

var save = function () {
    isSaving(true);
    return datacontext.saveChanges().fin(complete);

    function complete() {
        isSaving(false);
    }
};

我正在视图模型中更改Knockout observable的属性,但是KO似乎没有在datacontext中触发EntityManager上的hasChanges()属性,因此Breeze没有“看到”任何要保存的更改。我确信我忽略了一些愚蠢的想法?

1 个答案:

答案 0 :(得分:3)

我认为可以是这行代码:

parent().archived() === true;

你想用这条线做什么?

如果要将值设为true,则必须执行以下操作:

parent().archived(true);