我是BackboneJS和Jquery的新手,所以在尝试从php数组返回JSON数据时遇到问题。
这是我的代码: 型号:
var NoteModel = Backbone.Model.extend({
initialize:function(){
console.log('Model initialize');
},
url : '../www/api/controller.php'
});
查看:
var NoteView = Backbone.View.extend({
el : '#result',
// /var note = new NoteModel();
//template : _.template($("#result-view-template").html()),
initialize:function(){
console.log('View initialize');
},
render :function(){
//var note = new NoteModel();
var note = new NoteModel();
var template = _.template($("#result-view-template").html(),{result : note});
this.$el.html(template);
return this;
}
});
路线:
Backbone.emulateHTTP = true;
Backbone.emulateJSON = true;
var NoteRouter = Backbone.Router.extend({
routes : {
"result" : "displayMessage"
},
displayMessage : function(){
var notemodel = new NoteModel();
var noteview = new NoteView();
notemodel.fetch({
success: function(){
noteview.render();
}
})
}
});
var router = new NoteRouter();
Backbone.history.start();
PHP Api:
<?php
$datas = array(
'result '=> 'PHP array data'
);
$data = json_encode($datas);
echo $data;
?>
Html视图:
<div id="result"></div>
<script type="text/template" id="result-view-template">
<%= result %>
<p>result should be here</p>
</script>
它应该在#result div上返回php数组数据,但它不是,而不是在#result div上返回[object Object]。
答案 0 :(得分:0)
您尝试将模型本身解析为模板,但实际上您想要解析模型的获取方法的结果。
您可以从note_View对象的render函数中获取模型对象(从服务器返回),或者在路由器中实例化模型并将其作为'options'参数传递给note_View的初始化函数。
您可以执行以下操作:
路由器:
var notemodel = new NoteModel();
notemodel.fetch({
success: function(returned_model){
var noteview = new NoteView({model : returned_model});
}
})
}
查看:
var NoteView = Backbone.View.extend({
el : '#result',
initialize:function(options){
this.model = options.model;
this.render();
},
render :function(){
var template = _.template($("#result-view-template").html(),{result : this.model});
this.$el.html(template);
return this;
}
});
答案 1 :(得分:0)
您将整个对象传递到模板中。不要放任何这样的物体。如果要访问属性,请将其指定为model.attribute。