Jquery 如何从服务器获取模型并在视图中显示?
我已经从服务器获取了集合并显示在视图中。现在,我想在将Id传递给服务器时获取单个项目的详细信息。首先,我将收集和显示在网格中。现在,若有人点击gridview行,那个么我会在url中传递id。我想通过传递这个Id来获取模型。我要做什么来获取模型。我收到错误-未捕获的TypeError:无法读取未定义的属性“get” ********模型启动******************** *********模型端********************** ***********视图开始******************* ***********视图端******************** 有人能帮我解决这个问题吗 谢谢和问候Jquery 如何从服务器获取模型并在视图中显示?,jquery,backbone.js,Jquery,Backbone.js,我已经从服务器获取了集合并显示在视图中。现在,我想在将Id传递给服务器时获取单个项目的详细信息。首先,我将收集和显示在网格中。现在,若有人点击gridview行,那个么我会在url中传递id。我想通过传递这个Id来获取模型。我要做什么来获取模型。我收到错误-未捕获的TypeError:无法读取未定义的属性“get” ********模型启动******************** *********模型端********************** ***********视图开始********
shwetamber看起来您的主要问题在于renderList函数。现在我不知道你的模型是什么样子的,所以在你的描述中加上它可能会有帮助。但主要问题是如何将模型附加到模板。你不能仅仅把模型类扔进模板,你必须抓住模型的属性。所以也许你在找这个:
renderList: function () {
var compiledTemplate = _.template(orderDetails, { Details: this.order.attributes, Items: this.order.get('Items') });
this.$el.html(compiledTemplate);
}
我认为你需要稍微整理一下你的代码。我读这篇文章有点困难。类似这样的语句。order=新订单令人困惑。您正在创建新的订单模型或订单集合。那里有一个不知从哪里冒出来的window.ID。在您的渲染函数中,您正在从服务器获取内容,而在我看来,您应该只更新其中的视图。既然主干本身对你们应该如何使用它的解释是相当开放的,我真的建议你们使用木偶。它将为您提供一个像样的结构,并使处理嵌套视图更容易。
define([
'jquery',
'underscore',
'backbone',
'text!templates/orderDetails.html',
'collections/OrderCollection',
'collections/ItemCollection',
'models/Orders',
], function ($, _, Backbone, orderDetails, OrderCollection, ItemCollection,Orders) {
var ProfileView = Backbone.View.extend({
el: $("#content"),
render: function (Id) {
this.Id = Id;
var self = this;
this.order = new Orders();
this.order.fetch({
url: 'GetOrderDetails',
data: JSON.stringify({ orderId: window.Id }),
success: function () {
self.renderList();
},
error: function (a, b, c) {
alert(a);
}
});
},
renderList: function () {
var compiledTemplate = _.template(orderDetails, { Details: this.order, Items: this.order.Items });
this.$el.html(compiledTemplate);
}
});
return ProfileView;
});
renderList: function () {
var compiledTemplate = _.template(orderDetails, { Details: this.order.attributes, Items: this.order.get('Items') });
this.$el.html(compiledTemplate);
}