我试图在canjs中使用AMD来实现MVC。为此,我使用的是需求。这是我的domains.json文件:
[
"1":{"uid": "1","urls": "domain1.abc.com"},
"2":{"uid": "2","urls": "domain2.abc.com"},
"3":{"uid": "3","urls": "domain3.abc.com"}
]这是我的domainModel:
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;
});我正在追踪我的代码,我把breakpoints.On模型断点放在铬devtools中的局部变量中,我没有得到值。
url属性具有‘未定义/{id}’值,findAll方法具有四个属性,即参数、调用方、长度和名称,分别为null、null、0和"“。
通过在浏览器上浏览本地主机,检查了模型的url,它是正确的。那么为什么模型不能获得json文件的值呢?
发布于 2015-05-05 15:26:28
您应该得到一条错误消息,因为您的数据不是Model对findAll的期望。您的JSON应该是一个数组(或者至少有一个length属性):
[
{"uid": "1","urls": "domain1.abc.com"},
{"uid": "2","urls": "domain2.abc.com"},
{"uid": "3","urls": "domain3.abc.com"}
]您还可能希望将id属性设置为SearchModel中的uid
define(['can'], function(can){
SearchModel= can.Model({
id: 'uid',
findAll: 'GET /domains.json'
},{})
return SearchModel;
})https://stackoverflow.com/questions/30044402
复制相似问题