can-model 无法从 .json 文件获取数据

can-model cannot getting data from .json file

我正在尝试在 canjs 中使用 AMD 实现 MVC。为此,我正在使用 requirejs。 这是我的 domains.json 文件:

[            
"1":{"uid":     "1","urls": "domain1.abc.com"},
"2":{"uid":    "2","urls": "domain2.abc.com"},
"3":{"uid":    "3","urls": "domain3.abc.com"}
]

这是我的域模型:

define(['can'], function(can){
  SearchModel= can.Model({
     id: 'uid',
     findAll: 'GET /domains.json'
  },{})
  return SearchModel;
})

这是我的控制器:

define(['can','jquery'],function(can,$){
 domainController=can.Control({defaults:{view:"../view/search.hbs" }},           
  {
    init : function(element,options){   
        this.element.html(can.view(this.options.view,{
            searchlist : this.options.search
        }))
    }
});
return domainController;
} 

这是我的主要js:

equirejs(['can','controller/domainController','model/domainModel'],
 function(can, domainController,domainModel) {
   var Application = can.Control.extend({
    defaults :{ }
   },{  
        init: function(element,options){
         console.log('loaded');
         domainModel.findAll({}, function(domains){
            domainObject:{searchdomains : domains}
                 new domainController('#search',domainObject)
            });
        }
    })
return Application;
});

我正在追踪我的 code.I 放置 breakpoints.On 模型断点 我没有在 chrome devtools 中的局部变量中获取值。

url 属性 具有 'undefined/{id}' 值,findAll 方法具有四个属性,即参数、调用者、长度和名称分别具有值 null、null、0 和 ""

我已经通过浏览器上的 localhost 导航检查了我的 url 模型,它是正确的。 那么为什么模型无法获取 json 文件的值?

您应该会收到一条错误消息,因为您的数据不是 Model 期望的 findAll 数据。你的 JSON 应该是一个数组(或者至少有一个长度 属性):

[
  {"uid":     "1","urls": "domain1.abc.com"},
  {"uid":    "2","urls": "domain2.abc.com"},
  {"uid":    "3","urls": "domain3.abc.com"}
]

您可能还想将 SearchModel 中的 id 属性 设置为 uid:

define(['can'], function(can){
  SearchModel= can.Model({
     id: 'uid',
     findAll: 'GET /domains.json'
  },{})
  return SearchModel;
})