0

John Papa のすばらしい HotTowel を使用した SPA プロジェクトがあります。

フォルダーにモジュールがあり、機能は次のようにlistserviceなります。services

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

また、フォルダーにbusinessobjectモジュールがあります。modelsしかし、listserviceモジュールでアプリを実行しているとき、パラメーターの値businessobjectは null です。

伝えなければならないこと、RequireJSまたはモジュールがそこにあることを見逃していることはありますか?Durandal/Amdbusinessobject

の内容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モジュールがクライアントにロードされていることを確認しました。

4

1 に答える 1

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();
于 2013-08-04T16:14:41.570 に答える