【发布时间】:2014-12-27 16:47:50
【问题描述】:
我正在学习 Marionette Gentle Introduction,面临 Single Contact API 部分的一些问题。
好的,让我们直奔主题。
这是我的模板
<script type="text/template" id="contact-view">
<%= id %>
<h1><%= firstName %> <%= lastName %></h1>
<p><strong>Phone number:</strong> <%= phoneNumber %></p>
</script>
这是我的控制器的一部分
showContact: function(id){
var contact = ContactManager.request('contact:model', id);
var contactView;
if(contact !== undefined)
{
contactView = new Show.Contact({
model: contact
});
}
else
{
contactView = new Show.MissingContact();
}
ContactManager.mainRegion.show(contactView);
}
这是我模型的一部分
Entities.Contact = Backbone.Model.extend({
urlRoot: "php/contacts/index.php",
defaults: {
firstName: '',
lastName: '',
phoneNumber: ''
}
});
var API = {
getContactEntity: function(contactId){
var contact = new Entities.Contact({id:contactId});
contact.fetch();
return contact;
}
};
ContactManager.reqres.setHandler("contact:model", function(id){
return API.getContactEntity(id);
});
这是我的 php API
$data[] = array('id'=>1, 'firstName'=>'Alice', 'lastName'=>'Arten', 'phoneNumber'=>'555-0184');
$data[] = array('id'=>2, 'firstName'=>'Bob', 'lastName'=>'Brigham', 'phoneNumber'=>'555-0184');
$data[] = array('id'=>3, 'firstName'=>'Charlie', 'lastName'=>'Campbell', 'phoneNumber'=>'555-0184');
echo json_encode($data[1]);
我尽量保持简单。所以当我删除默认值时,错误如下
firstName is not defined
我尝试控制台登录模型中的联系人,请参考此http://prntscr.com/51k7ec
我很确定它是从 previousAttributes 获取属性而不是属性
请帮帮我。我做错什么了吗?
提前致谢
【问题讨论】:
-
能否附上
reqres.setHandler("contact:model" ...)的代码 -
已经附在模型部分。谢谢
-
我明白了,fetch 是异步的,你喜欢等到它完成
-
对不起,我不明白你的意思。
-
你能显示视图的代码吗?
标签: javascript backbone.js underscore.js marionette