我可以在微风和durandal中访问模型内​​的datacontext吗?

时间:2013-06-06 07:04:38

标签: knockout.js breeze durandal hottowel

我想创建knockout计算函数,它将使用breeze方法执行ajax调用,并根据实体类型检索所有记录,如下所示。

standardResourceProperty.listItems = ko.computed({
        read: function () {
            listObsevable = ko.observableArray();
            datacontext.getStandardResourcePropertyListItems(standardResourceProperty.id(),listObsevable);
            return listObsevable;
        },
        write: function (value) {

        }
    });

该函数写在standardResourcePropertyInitializer中,用

初始化
metadataStore.registerEntityTypeCtor(
        'StandardResourceProperty', function () { this.isPartial = false; }, standardResourcePropertyInitializer);

当我在ui中使用knockout迭代标准资源时,我想要列表。

然而,我将datacontext视为未定义。甚至认为它与durandal在与

相同的文件中正确注册
define(['config', 'durandal/system', 'services/logger', 'services/datacontext'],
function (config, system, logger,datacontext) {

我的数据上下文代码如下所示

define([
'durandal/system',
'services/model',
'config',
'services/logger',
'services/breeze.partial-entities'],
function (system, model, config, logger, partialMapper) {

var datacontext = {
        getResources: getResources,
        cancelChanges: cancelChanges,
        saveChanges: saveChanges,
        getStandardResourceProperty: getStandardResourceProperty,
        getStandardResourcePropertyListItems: getStandardResourcePropertyListItems,
        getResourceProperty: getResourceProperty,
        createResource: createResource,
    };

    return datacontext;
});

如有任何建议,请与我们联系。

2 个答案:

答案 0 :(得分:0)

在做了一些调查后,我已经实现了服务器端查询以返回相关对象(子对象),然后创建计算用于在视图中使用knockout绑定来访问它。

答案 1 :(得分:0)

我找到了解决方案! 在services文件夹

下创建一个名为binding.js的新文件
define(['services/logger', 'services/datacontext'], function (logger, datacontext) {
    logger.log('about to do binding');
    YOUR KO CODE 
    datacontext.createTimeSlotWithValue({
                    description: 'descrizione da drop'
                });
                datacontext.saveChanges();
});

在定义sheel.js时添加'services \ logger'。这是更干净的