当超越RAD(拖放和配置)构建用户界面的方式时,许多工具鼓励您可能会遇到三种设计模式,称为模型 - 视图 - 控制器,模型 - 视图 - 展示器和模型 - 视图 - 视图模型.我的问题有三个部分:
model-view-controller mvp user-interface glossary design-patterns
我是iOS和Objective-C以及整个MVC范例的新手,我坚持以下内容:
我有一个视图作为数据输入表单,我想让用户选择多个产品.产品列在另一个带有a的视图中,UITableViewController
我启用了多个选择.
我的问题是,如何将数据从一个视图传输到另一个视图?我将UITableView
在数组中保留选择,但是如何将其传递回上一个数据输入表单视图,以便在提交表单时将其与其他数据一起保存到Core Data?
我已经四处浏览并看到一些人在app delegate中声明了一个数组.我读了一些关于单身人士的事情,但不明白这些是什么,我读了一些关于创建数据模型的内容.
执行此操作的正确方法是什么?我将如何进行此操作?
model-view-controller objective-c uiviewcontroller ios swift
标准的"模型视图控制器"模式与Microsoft的模型/视图/ ViewModel模式之间是否存在差异?
我只是掌握了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)
我的模型往往是映射到数据库表的实体类.
模型对象是否应具有所有数据库映射属性以及上面的代码,或者可以将实际上数据库工作的代码分开吗?
我最终会有四层吗?
是否可以在Java for Android中实现模型 - 视图 - 控制器模式?
或者它是否已通过活动实施?或者有更好的方法来实现Android的MVC模式?
我正在Django中编写一个项目,我发现80%的代码都在文件中models.py
.这段代码令人困惑,经过一段时间后,我不再明白究竟发生了什么.
这是困扰我的:
User
,但从技术上讲,它应该统一创建它们.这是一个简单的例子.起初,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)
我想要的是在我的代码中分离实体:
实现可以在Django中应用的这种方法有哪些好的做法?
python django model-view-controller business-logic-layer data-access-layer
我正在与AngularJS合作完成我的最新项目.在文档和教程中,所有模型数据都放入控制器范围.我知道必须存在控制器,因此在相应的视图中.
但是,我不认为该模型应该在那里实施.它可能很复杂并且具有私有属性.此外,人们可能希望在另一个上下文/应用程序中重用它.将所有内容放入控制器完全打破了MVC模式.
对于任何模型的行为都是如此.如果我使用DCI架构并从数据模型中分离行为,我将不得不引入其他对象来保存行为.这可以通过引入角色和上下文来完成.
当然,模型数据和行为可以使用普通的javascript对象或任何"类"模式来实现.但AngularJS的做法是什么呢?使用服务?
所以它归结为这个问题:
在AngularJS最佳实践之后,您如何实现与控制器分离的模型?
有没有办法在视图中找出当前控制器的内容?
举例说明为什么我想知道这个:如果几个控制器共享相同的布局,我可能在布局ERB文件中有一个部分,我想根据控制器突出显示当前页面的菜单项.
也许这是一个糟糕的方法.如果是这样,更优选的方法是什么?
不过,我很想知道如何获得当前控制器的名称.
(显然我可以@controller_name = 'users'
在每个控制器中放置类似的东西;但这似乎是Rails在幕后已经完成的事情.所以我只是想知道是否有内置方式.)
我正在尝试构建一个指令,负责向声明它的元素添加更多指令.例如,我想构建一个负责添加的指令datepicker
,datepicker-language
和ng-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