Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 视图如何了解其模型?_Model View Controller_Backbone.js - Fatal编程技术网

Model view controller 视图如何了解其模型?

Model view controller 视图如何了解其模型?,model-view-controller,backbone.js,Model View Controller,Backbone.js,我正在开发BackboneJS应用程序。下面是我正在研究的一个案例,它似乎不适合MVC设置(或者,更可能的是,我对MVC的理解没有涉及到将其放在何处) 我有一组代表图片的模型。比如说,在这个例子中,有100个。我有一个控制器,它告诉视图加载这些模型的选择,因为它一页一页地显示图片。。所以第1页显示了前10页,以此类推 这里的问题是控制器是否应该告诉视图“这是您的模型”,或者视图是否应该知道“我从\uuuu\uuu获取模型,我需要选择其中的一个子集”。“和”是让我担心的。控制器知道“用户已请求模型

我正在开发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();

这样,您的集合知道从何处获取数据,视图就会调用服务器。

您描述的是集合中的记录或元组,而不是模型。一个“模型”可以包含一组图片。啊,我明白了。。因此,也许我对模型的看法是错误的。模型是数据从一个地方传递到另一个地方的容器。