Могу ли я получить доступ к контексту данных внутри модели в бризе и дюрандале?

Я хочу создать нокаутирующую вычисляемую функцию, которая будет выполнять вызов 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);

Я хочу иметь список, когда я перебираю стандартный ресурс в пользовательском интерфейсе с нокаутом для каждого файла .

Однако я получаю datacontext как undefined. Даже если он правильно зарегистрирован в 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;
});

Пожалуйста, дайте мне знать для любого предложения.


person parth1729    schedule 06.06.2013    source источник
comment
Как выглядит ваш сервис datacontext? Возможно, вы не возвращаете из него экземпляр объекта.   -  person Miroslav Popovic    schedule 06.06.2013
comment
Нет, это не тот случай, поскольку в моих моделях просмотра он извлекается правильно. Однако для данного случая я хочу построить свою модель, используя контекст данных. Поэтому я не уверен, почему один и тот же контекст данных не работает должным образом с моделью, когда он работает с моделью представления.   -  person parth1729    schedule 06.06.2013
comment
@parth1729 parth1729 Можете ли вы отредактировать свой пост и добавить код контекста данных?   -  person CodingGorilla    schedule 06.06.2013
comment
@CodingGorilla Я добавил пример кода с некоторыми методами, которые я возвращаю из файла datacontext.js.   -  person parth1729    schedule 06.06.2013
comment
@ parth1729 parth1729 Можете ли вы проверить (с помощью отладчика или console.log), что datacontext не является неопределенным, до создания вычисляемого?   -  person CodingGorilla    schedule 06.06.2013
comment
@CodingGorilla Да, я проверил, помещая console.log, что контекст данных не определен даже в начале функции модели, а также в функции, где мы инициализировали все сущности бриза с помощью metadataStore.registerEntityTypeCtor('Resource', function () { this.isPartial = false; }, ресурсИнициализатор);   -  person parth1729    schedule 06.06.2013
comment
@ parth1729 ты решил это?   -  person Carlo Moretto    schedule 18.08.2013


Ответы (2)


Проведя еще несколько исследований, я реализовал запрос на стороне сервера для возврата связанных объектов (дочерних объектов), а затем создал вычисление для доступа к нему с привязкой нокаута в поле зрения.

person parth1729    schedule 08.08.2013

Я нашел решение! Создайте новый файл с именем 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();
});

Добавьте «services\logger» в sheel.js, когда вы его определяете. это чище

person Carlo Moretto    schedule 19.08.2013