我想创建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;
});
如有任何建议,请与我们联系。
答案 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'。这是更干净的