Model view controller 视图如何了解其模型?
我正在开发BackboneJS应用程序。下面是我正在研究的一个案例,它似乎不适合MVC设置(或者,更可能的是,我对MVC的理解没有涉及到将其放在何处) 我有一组代表图片的模型。比如说,在这个例子中,有100个。我有一个控制器,它告诉视图加载这些模型的选择,因为它一页一页地显示图片。。所以第1页显示了前10页,以此类推 这里的问题是控制器是否应该告诉视图“这是您的模型”,或者视图是否应该知道“我从\uuuu\uuu获取模型,我需要选择其中的一个子集”。“和”是让我担心的。控制器知道“用户已请求模型的第一页”,因此更自然地告诉视图“这是用户请求的模型选择”Model view controller 视图如何了解其模型?,model-view-controller,backbone.js,Model View Controller,Backbone.js,我正在开发BackboneJS应用程序。下面是我正在研究的一个案例,它似乎不适合MVC设置(或者,更可能的是,我对MVC的理解没有涉及到将其放在何处) 我有一组代表图片的模型。比如说,在这个例子中,有100个。我有一个控制器,它告诉视图加载这些模型的选择,因为它一页一页地显示图片。。所以第1页显示了前10页,以此类推 这里的问题是控制器是否应该告诉视图“这是您的模型”,或者视图是否应该知道“我从\uuuu\uuu获取模型,我需要选择其中的一个子集”。“和”是让我担心的。控制器知道“用户已请求模型
这是正确的做法吗 我同意罗伯特的观点,你的看法有点错误。每个视图只能有一个模型,因此您的模型应包括要在该视图中显示的所有图片。例如,您的模型可以是:
public class Gallery
{
public List<string> ImageUrls { get; set; }
}
公共类库
{
公共列表ImageUrls{get;set;}
}
现在,控制器将一个Gallery对象作为其模型传递给视图,视图将在模型对象中包含所有图像URL。但是模型对象只是一个对象,所有图像(以及该视图的所有其他信息)都应该包含在其中
您希望控制器决定显示哪些图像并将其发送到视图是正确的。通常,经验法则是让模型只是数据结构,视图只是数据显示,控制器是大脑,所有的计算都应该在那里完成。这并不一定是通用的,尤其是当你开始处理外部服务时。但我们不要离题
我希望这会有所帮助,并且你会对MVC网站的组织方式有更好的了解。如果您还有任何问题,请告诉我!:) 组织主干模型可能需要看起来像
var Image = Backbone.Model.extend({
url: 'place/where/images/are'
});
var Images = Backbone.Collection.extend({
model: Image
});
var ImageView = Backbone.View.extend({
initialize: function(){
this.collection.bind('add', this.render, this);
this.collection.fetch({
data: {
// Send whatever you need to the server
}
});
},
render: function(model){
// do something with the added model
}
});
var myImageView = new ImageView();
这样,您的集合知道从何处获取数据,视图就会调用服务器。您描述的是集合中的记录或元组,而不是模型。一个“模型”可以包含一组图片。啊,我明白了。。因此,也许我对模型的看法是错误的。模型是数据从一个地方传递到另一个地方的容器。