canjs で AMD を使用して MVC を実装しようとしています。そのためにrequirejsを使用しています。これは私の domain.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;
});
コードをトレースしています。ブレークポイントを配置しています。モデルのブレークポイントで、Chrome devtools のローカル変数の値を取得していません。
URL プロパティには 'undefined/{id}' 値があり、findAll メソッドには 4 つのプロパティがあります。
ブラウザで localhost をナビゲートしてモデルの URL を確認しましたが、正しいです。それでは、なぜモデルはjsonファイルの値を取得できないのでしょうか?