Dip*_*ana 9 javascript json requirejs canjs canjs-model
我试图在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"}
]
Run Code Online (Sandbox Code Playgroud)
这是我的domainModel:
define(['can'], function(can){
SearchModel= can.Model({
id: 'uid',
findAll: 'GET /domains.json'
},{})
return SearchModel;
})
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
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;
}
Run Code Online (Sandbox Code Playgroud)
这是我的主要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;
});
Run Code Online (Sandbox Code Playgroud)
我正在寻找我的代码.我把断点.在模型断点上我没有在chrome devtools中获取局部变量的值.
url属性具有'undefined/{id}'值,findAll方法具有四个属性,即参数,调用者,长度和名称,其值分别为null,null,0和""
我通过在浏览器上浏览localhost来检查我的模型网址,这是正确的.那么为什么模型无法获取json文件的值?
您应该收到一条错误消息,因为您的数据不是Model对findAll的期望.您的JSON应该是一个数组(或至少具有length属性):
[
{"uid": "1","urls": "domain1.abc.com"},
{"uid": "2","urls": "domain2.abc.com"},
{"uid": "3","urls": "domain3.abc.com"}
]
Run Code Online (Sandbox Code Playgroud)
您还可能希望将idSearchModel中的属性设置为uid:
define(['can'], function(can){
SearchModel= can.Model({
id: 'uid',
findAll: 'GET /domains.json'
},{})
return SearchModel;
})
Run Code Online (Sandbox Code Playgroud)