Я пытаюсь реализовать MVC, используя AMD в canjs. Для этого я использую 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;
});
Я отслеживаю свой код. Я ставлю точки останова. В точках останова модели я не получаю значения в локальных переменных в chrome devtools.
Свойство url имеет значение «undefined/{id}», а метод findAll имеет четыре свойства, то есть аргументы, вызывающий абонент, длину и имя, имеющие значение null, null, 0 и «» соответственно.
Я проверил свой URL-адрес модели, перейдя через локальный хост в браузере, и это правильно. Тогда почему модель не может получить значения файла json?