Javascript 使用requirejs实例化canjs控制器时出错

Javascript 使用requirejs实例化canjs控制器时出错,javascript,jquery,requirejs,canjs,Javascript,Jquery,Requirejs,Canjs,我正在使用canjs,需要js来创建mvc应用程序。我对他们俩都不熟悉 我创建了一个基本的js类--home.php,并在home.php中加载了jquery、canjs和requirejs 我有两个单独的文件夹,分别名为controller和model 在model-home\m.js中,我有以下代码 var Description = can.Model.extend({ findAll: 'GET ../webService/ajax/ajax_router.php?q=desc'

我正在使用canjs,需要js来创建mvc应用程序。我对他们俩都不熟悉

我创建了一个基本的js类--home.php,并在home.php中加载了jquery、canjs和requirejs

我有两个单独的文件夹,分别名为controller和model

在model-home\m.js中,我有以下代码

var Description = can.Model.extend({
    findAll: 'GET ../webService/ajax/ajax_router.php?q=desc',
    create: 'POST ../webService/ajax/ajax_router.php',
    update: 'PUT ../webService/ajax/ajax_router.php/{id}',
    destroy: 'DELETE ../webService/ajax/ajax_router.php/{id}'
}, {});
在控制器中,我有home_c.js文件。代码如下

require(['../model/home_m'], function(homeModel){

  var Descriptions = can.Control.extend({
    'init': function(element, options){
        var self = this;
        console.log(self);
         Description.findAll({}, function(des){
             console.log(des);
         });
      }
  });
});
最后在home.js中我得到了这个代码

require(['../controller/home_c'], function(m, c) {
 new Descriptions('#abc', {});
});
但这就产生了错误-

我做错了什么

ReferenceError:未定义描述

如果我在controller/home_c.js中声明了一个var a=5,并尝试警告home.js文件中的值,那么它就正常工作了。canjs代码有什么问题吗


谢谢,这不是CanJS的问题,而是AMD(和RequireJS)的工作原理。如果您这样定义模型和控件:

// models/home_m.js
define(['can/model'], function(Model) {
    return Model.extend({
        findAll: 'GET ../webService/ajax/ajax_router.php?q=desc',
        create: 'POST ../webService/ajax/ajax_router.php',
        update: 'PUT ../webService/ajax/ajax_router.php/{id}',
        destroy: 'DELETE ../webService/ajax/ajax_router.php/{id}'
    }, {}); 
});

// controller/home_c.js
define(['can/control', '../model/home_m'], function(Control, homeModel){
  return Control.extend({
    'init': function(element, options){
        var self = this;
        console.log(self);
         Description.findAll({}, function(des){
             console.log(des);
         });
      }
  });
});

// home.js
require(['../controller/home_c'], function(Descriptions) {
 new Descriptions('#abc', {});
});
事情应该按预期的方式进行。

谢谢:)我想我需要更多关注AMD和Requirejs