使用RequireJS未定义require('search')

时间:2013-11-08 11:18:50

标签: knockout.js requirejs durandal single-page-application

#model#: search.js

define('search',function(){
    var searchCriteria = function () {
        var self = this;
        self.DeviceSerialNumber = ko.observable('');
        self.OrderNumber = ko.observable('');
        self.PosTranNumber = ko.observable('');
        self.EmailAddress = ko.observable('');
        self.SuspendedbarCode = ko.observable('');
        self.MobileNumber = ko.observable('');
    };

    return new searchCriteria();
});

我试图通过以下代码在 searchReturn.js 中调用上述模型

define(function (require) {
    var searchObj = require('search')
});

当我调试代码时,searchObj未定义。任何人都可以指导我重新开始吗?

我应该为搜索模型配置什么吗?

谢谢,
湿婆雷迪

3 个答案:

答案 0 :(得分:0)

尝试改变这样,

    define(function(){
      var searchCriteria = function () {      
      //.....
    });

答案 1 :(得分:0)

不确定你是否全局加载了淘汰赛,但如果没有,那么它必须在它首次使用之前声明:

/*globals define*/
define(function(require){
    "use strict";
    var ko = require('knockout'),
    searchCriteria = function () {
          var self = this;
          self.DeviceSerialNumber = ko.observable('');
          self.OrderNumber = ko.observable('');
          self.PosTranNumber = ko.observable('');
          self.EmailAddress = ko.observable('');
          self.SuspendedbarCode = ko.observable('');
          self.MobileNumber = ko.observable('');
      };

      return new searchCriteria();
});

第二个AMD模块没有返回值(可能只是一个复制/粘贴问题),但这也可能导致问题。不确定是否有为搜索配置的路径,但如果没有,并且该模块可以在同一目录中访问,那么它必须以./为前缀

/*globals define*/
define(function(require){
    "use strict";

    var searchObj = require('./search');

    return {
        searchObj : searchObj
    };

});

实时版本:http://dfiddle.github.io/dFiddle-2.0/#so/19857807

只是添加。如果搜索模型应该多次实例化,那么最好只从搜索模块返回构造函数并在需要时进行实例化。

搜索模块

/*globals define*/
define(function(require){
   ...

      return searchCriteria;
});

另一个模块:

define(function(require){
    "use strict";

    var searchObj = require('./search');

    return {
        searchObj : new searchObj()
    };

});

答案 2 :(得分:0)

define(function (require) {
    return {
        searchCriteria: function () {
            var self = this;
            self.DeviceSerialNumber = ko.observable('');
            self.OrderNumber = ko.observable('');
            self.PosTranNumber = ko.observable('');
            self.EmailAddress = ko.observable('');
            self.SuspendedbarCode = ko.observable('');
            self.MobileNumber = ko.observable('');
        }
    };
});

上面的代码对我来说很好,我可以调用我的searchCriteria对象。

谢谢, 婆