Sorting 在视图或模型中进行筛选/排序?
有一个数据对象列表和一些可视化的东西来表示每个对象,您会在哪里对排序/过滤逻辑进行编码?为什么?Sorting 在视图或模型中进行筛选/排序?,sorting,filtering,mvp,Sorting,Filtering,Mvp,有一个数据对象列表和一些可视化的东西来表示每个对象,您会在哪里对排序/过滤逻辑进行编码?为什么? 编辑:到目前为止,所有的答案都是好的,但我忘了添加另一个约束条件。如果我不想每次都重建视图呢 我将在控制器中输入排序和筛选方法,并从视图中调用这些方法。我将在控制器中输入排序和筛选方法,并从视图中调用这些方法。您的视图应该只处理显示输出。将任何筛选/排序放入您的业务逻辑中,并将其返回到视图。您的视图应该只处理显示输出。将任何筛选/排序放入业务逻辑中,并将其返回到视图。取决于排序/筛选操作的复杂性以及
编辑:到目前为止,所有的答案都是好的,但我忘了添加另一个约束条件。如果我不想每次都重建视图呢 我将在控制器中输入排序和筛选方法,并从视图中调用这些方法。我将在控制器中输入排序和筛选方法,并从视图中调用这些方法。您的视图应该只处理显示输出。将任何筛选/排序放入您的业务逻辑中,并将其返回到视图。您的视图应该只处理显示输出。将任何筛选/排序放入业务逻辑中,并将其返回到视图。取决于排序/筛选操作的复杂性以及视图控件是否以本机方式提供这些服务。如果视图控件提供过滤,并且它只是重新格式化内存中的数据,那么将其保留在视图中。如果排序/筛选需要再次访问数据源,则将其全部保存在控制器中。取决于排序/筛选操作的复杂性以及视图控件是否以本机方式提供这些服务。如果视图控件提供过滤,并且它只是重新格式化内存中的数据,那么将其保留在视图中。如果排序/筛选需要再次访问数据源,则将其全部保存在控制器中。答案在于数据。模型传递数据。如果所有数据都在视图中,则过滤和排序可以包含在视图中。如果数据是分块的,那么模型必须交付数据并包含一些过滤/排序。视图可能仍然包含过滤/排序
控制器不应包含这些功能,因为它是一种路由机制,不应知道如何解释数据。答案在于数据。模型传递数据。如果所有数据都在视图中,则过滤和排序可以包含在视图中。如果数据是分块的,那么模型必须交付数据并包含一些过滤/排序。视图可能仍然包含过滤/排序
控制器不应该包含这些功能,因为它是一种路由机制,不应该知道如何解释数据。我认为排序应该是独立的。您不应该在模型中排序,因为您希望保持它的原样。基本上,模型中的更改意味着视图的重新渲染,例如,如果要在“过滤器前”和“过滤器后”状态之间设置过渡动画,则可能不希望重新渲染视图
我的建议是,模型提供数据来创建视图的可视对象列表和分类器对象。sorter对象将输出一个呈现列表,该列表只是一个链接到对象列表中的可视对象索引或其他标识符的列表。ID的显示顺序表示排序顺序,不在渲染列表中的任何ID都将隐藏。每次视图收到渲染列表时,它都会更新其显示。我认为排序应该是独立的。您不应该在模型中排序,因为您希望保持它的原样。基本上,模型中的更改意味着视图的重新渲染,例如,如果要在“过滤器前”和“过滤器后”状态之间设置过渡动画,则可能不希望重新渲染视图
我的建议是,模型提供数据来创建视图的可视对象列表和分类器对象。sorter对象将输出一个呈现列表,该列表只是一个链接到对象列表中的可视对象索引或其他标识符的列表。ID的显示顺序表示排序顺序,不在渲染列表中的任何ID都将隐藏。每次视图收到渲染列表时,它都会更新其显示。我喜欢控制器作为路由机制的描述。我喜欢控制器作为路由机制的描述。