无法在HotTowel SPA上加载模块

时间:2013-08-04 11:37:49

标签: javascript amd durandal hottowel

我有一个使用John Papa伟大的HotTowel的SPA项目。

我在listservice文件夹中有一个services模块,功能如下:

define(['services/logger', 'models/businessobject', 'config'],
    function (logger, businessobject, config) {
        ...
    }

此外,我在businessobject文件夹中有一个models模块。但是当我在listservice模块中运行应用程序时,参数businessobject的值为空。

我有什么可以告诉RequireJSDurandal/Amd businessobject模块在​​那里吗?

businessobject.js的内容如下:

define(['services/logger'],
function(logger) {
    var BusinessObject = function() {
        var self = this;
        self.id = ko.observable();
        self.typeId = ko.observable();
        self.descriptor = ko.observable();
        self.isNullo = false;
        return self;
    };

    return BusinessObject;
}

另外,使用Firebug,我检查了businessobject模块是否已加载到客户端。

1 个答案:

答案 0 :(得分:0)

您的BusinessObject未以任何方式实例化。如果您尝试使用它来展示各种模型,那么就像这样 -

define([], function() {

    var businessModels = {
         businessObject: businessObject
    };
    return businessModels;

    function businessObject(id, typeid, descriptor, isNullo) {       
        var self = this;
        self.id = ko.observable(id);
        self.typeId = ko.observable(typeid);
        self.descriptor = ko.observable(descriptor);
        self.isNullo = isnullo;
    }

然后从列表服务

var myObj = new BusinessObject.businessObject(1, 2, 'my obj', false);

或者,如果您只想为每个模型设置一个模块,这看起来有点笨重但确实可以完成,您可以按原样保留代码并正常实例化 -

var myObj = new BusinessObject();