标签: model-view-controller

什么是MVP和MVC,有什么区别?

当超越RAD(拖放和配置)构建用户界面的方式时,许多工具鼓励您可能会遇到三种设计模式,称为模型 - 视图 - 控制器,模型 - 视图 - 展示器模型 - 视图 - 视图模型.我的问题有三个部分:

  1. 这些模式解决了哪些问题?
  2. 它们如何相似?
  3. 他们有什么不同?

model-view-controller mvp user-interface glossary design-patterns

2081
推荐指数
22
解决办法
47万
查看次数

在视图控制器之间传递数据

我是iOS和Objective-C以及整个MVC范例的新手,我坚持以下内容:

我有一个视图作为数据输入表单,我想让用户选择多个产品.产品列在另一个带有a的视图中,UITableViewController我启用了多个选择.

我的问题是,如何将数据从一个视图传输到另一个视图?我将UITableView在数组中保留选择,但是如何将其传递回上一个数据输入表单视图,以便在提交表单时将其与其他数据一起保存到Core Data?

我已经四处浏览并看到一些人在app delegate中声明了一个数组.我读了一些关于单身人士的事情,但不明白这些是什么,我读了一些关于创建数据模型的内容.

执行此操作的正确方法是什么?我将如何进行此操作?

model-view-controller objective-c uiviewcontroller ios swift

1340
推荐指数
34
解决办法
44万
查看次数

MVC和MVVM有什么区别?

标准的"模型视图控制器"模式与Microsoft的模型/视图/ ViewModel模式之间是否存在差异?

model-view-controller design-patterns mvvm

1275
推荐指数
19
解决办法
55万
查看次数

如何在MVC中构建模型?

我只是掌握了MVC框架,我常常想知道模型中应该有多少代码.我倾向于有一个数据访问类,其方法如下:

public function CheckUsername($connection, $username)
{
    try
    {
        $data = array();
        $data['Username'] = $username;

        //// SQL
        $sql = "SELECT Username FROM" . $this->usersTableName . " WHERE Username = :Username";

        //// Execute statement
        return $this->ExecuteObject($connection, $sql, $data);
    }
    catch(Exception $e)
    {
        throw $e;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的模型往往是映射到数据库表的实体类.

模型对象是否应具有所有数据库映射属性以及上面的代码,或者可以将实际上数据库工作的代码分开吗?

我最终会有四层吗?

php architecture oop model-view-controller model

541
推荐指数
4
解决办法
17万
查看次数

Android上的MVC模式

是否可以在Java for Android中实现模型 - 视图 - 控制器模式?

或者它是否已通过活动实施?或者有更好的方法来实现Android的MVC模式?

java model-view-controller android design-patterns

493
推荐指数
16
解决办法
24万
查看次数

在django中分离业务逻辑和数据访问

我正在Django中编写一个项目,我发现80%的代码都在文件中models.py.这段代码令人困惑,经过一段时间后,我不再明白究竟发生了什么.

这是困扰我的:

  1. 我发现我的模型级别(它应该只负责处理数据库中的数据)也发送电子邮件,在API上运行到其他服务等等,这让我觉得很难看.
  2. 此外,我发现在业务逻辑中放置业务逻辑是不可接受的,因为这样很难控制.例如,在我的应用程序中,至少有三种创建新实例的方法User,但从技术上讲,它应该统一创建它们.
  3. 我并不总是注意到我的模型的方法和属性何时变得不确定,何时会产生副作用.

这是一个简单的例子.起初,User模型是这样的:

class User(db.Models):

    def get_present_name(self):
        return self.name or 'Anonymous'

    def activate(self):
        self.status = 'activated'
        self.save()
Run Code Online (Sandbox Code Playgroud)

随着时间的推移,它变成了这样:

class User(db.Models):

    def get_present_name(self): 
        # property became non-deterministic in terms of database
        # data is taken from another service by api
        return remote_api.request_user_name(self.uid) or 'Anonymous' 

    def activate(self):
        # method now has a side effect (send message to user)
        self.status = 'activated'
        self.save()
        send_mail('Your account is activated!', '…', [self.email])
Run Code Online (Sandbox Code Playgroud)

我想要的是在我的代码中分离实体:

  1. 我的数据库,数据库级别的实体:什么包含我的应用程序?
  2. 我的应用程序的实体,业务逻辑级别:什么可以使我的应用程序?

实现可以在Django中应用的这种方法有哪些好的做法?

python django model-view-controller business-logic-layer data-access-layer

441
推荐指数
5
解决办法
9万
查看次数

在哪里放置模型数据和行为?[TL; 博士; 使用服务]

我正在与AngularJS合作完成我的最新项目.在文档和教程中,所有模型数据都放入控制器范围.我知道必须存在控制器,因此在相应的视图中.

但是,我不认为该模型应该在那里实施.它可能很复杂并且具有私有属性.此外,人们可能希望在另一个上下文/应用程序中重用它.将所有内容放入控制器完全打破了MVC模式.

对于任何模型的行为都是如此.如果我使用DCI架构并从数据模型中分离行为,我将不得不引入其他对象来保存行为.这可以通过引入角色和上下文来完成.

当然,模型数据和行为可以使用普通的javascript对象或任何"类"模式来实现.但AngularJS的做法是什么呢?使用服务?

所以它归结为这个问题:

在AngularJS最佳实践之后,您如何实现与控制器分离的模型?

javascript model-view-controller dci angularjs

340
推荐指数
7
解决办法
7万
查看次数

Java EE Web开发,我从哪里开始,我需要什么技能?

我想学习,至少在基础层面,如何构建Java Web应用程序(来自.NET背景).我希望能够从头开始构建,部署一个简单的CMS类型应用程序.

我究竟需要学习什么?

Tomcat似乎是一个很好的Java Web服务器.

网络有哪些选择?我知道有一个ORM的Hibernate.

Java有MVC吗?JSP怎么样?MVC和JSP可以在一起吗?NetBeans

也许这本书涵盖了所有这些?

model-view-controller jsp servlets java-ee

213
推荐指数
5
解决办法
6万
查看次数

我可以在视图中获取当前控制器的名称吗?

有没有办法在视图中找出当前控制器的内容?

举例说明为什么我想知道这个:如果几个控制器共享相同的布局,我可能在布局ERB文件中有一个部分,我想根据控制器突出显示当前页面的菜单项.

也许这是一个糟糕的方法.如果是这样,更优选的方法是什么?

不过,我很想知道如何获得当前控制器的名称.

(显然我可以@controller_name = 'users'在每个控制器中放置类似的东西;但这似乎是Rails在幕后已经完成的事情.所以我只是想知道是否有内置方式.)

model-view-controller controller ruby-on-rails view

202
推荐指数
4
解决办法
11万
查看次数

在AngularJS中添加指令中的指令

我正在尝试构建一个指令,负责声明它的元素添加更多指令.例如,我想构建一个负责添加的指令datepicker,datepicker-languageng-required="true".

如果我尝试添加这些属性然后使用$compile我显然会生成一个无限循环,所以我正在检查我是否已经添加了所需的属性:

angular.module('app')
  .directive('superDirective', function ($compile, $injector) {
    return {
      restrict: 'A',
      replace: true,
      link: function compile(scope, element, attrs) {
        if (element.attr('datepicker')) { // check
          return;
        }
        element.attr('datepicker', 'someValue');
        element.attr('datepicker-language', 'en');
        // some more
        $compile(element)(scope);
      }
    };
  });
Run Code Online (Sandbox Code Playgroud)

当然,如果我没有$compile元素,那么将设​​置属性但是指令不会被引导.

这种方法是正确的还是我做错了?有没有更好的方法来实现相同的行为?

UDPATE:鉴于这$compile是实现这一目标的唯一方法,有没有办法跳过第一个编译传递(该元素可能包含几个子节点)?也许通过设置terminal:true

更新2:我已经尝试将指令放入一个select元素中,正如预期的那样,编译运行两次,这意味着预期option的数量是预期的两倍.

javascript model-view-controller mvvm angularjs angularjs-directive

197
推荐指数
3
解决办法
10万
查看次数