问题标签 [mvw]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - MVW 代表什么?
这是 AngularJS 页面的内容描述:
AngularJS 本来就是 HTML,如果它是为构建 web 应用程序而设计的。具有数据绑定、MVW、MVVM、MVC、依赖注入和出色的可测试性故事的声明式模板全部使用纯客户端 JavaScript 实现!
那么 MVW 代表什么?(考虑到 MVC、MVVW、MVP 等争吵,我猜“随便”,Model-View-Whatever =P)
angularjs - AngularJS 控制器是否曾经使用过一种以上的操作/设置方法?
我见过的大多数 AngularJS 控制器示例,通常都有一个单独的操作方法,可以为视图连接所有内容。另一方面,在使用 MVC 模式而不是 AngularJS 的 MVW 的控制器中,每个控制器通常有多个操作方法,但 AngularJS 似乎并非如此。
如果可以将任意数量的执行行为的方法连接到 $scope(或其他对象),这似乎与 MVC 的操作方法相同,因为它们不会自动接受直接路由输入。
我很感兴趣,因为我正在尝试将现有的 Asp.net MVC 应用程序转换为 Angular,并且我正在尝试为控制器确定最佳的组织分解。
我的各种假设是否正确?
AngularJS 控制器是否曾经使用过一种以上的操作/设置方法?
角度控制器是否曾经分解为单独的动作?还是角度控制器或多或少有一个动作,尽管路由和视图可能不同?
更新:
请求的示例 - AngularJS 控制器:
Asp.Net 控制器 MVC 示例:
Ruby on Rails 控制器示例:
如果你看这三个例子,AngularJS 只有一个构造函数/设置方法,而 Asp.net MVC 例子有一个构造函数和两个动作方法。 Ruby of rails 例子甚至没有可见的构造函数,只是动作方法。Asp.net MVC 示例(或 Ruby on Rails 示例)类似于其他 MVC 实现中的操作数量。在 AngularJS 中,我猜只有一个动作/构造函数方法,其中一个会附加任何额外的行为。另一方面,Asp.net MVC 示例有一个构造函数和两个动作方法,它们都可以以不同的方式路由到。类似于单个 AngularJS 委托人/动作。
javascript - 你应该如何在 AngularJS 中定义常规函数
我在 AngularJS 方面有一些经验,但我不知道如何处理 AngularJS 控制器中的常规函数这一事实一直困扰着我。为了记录,我正在谈论一个处理控制器内部部分小型业务逻辑的函数,不需要在控制器之间共享。我找到了两种方法来处理不需要从视图绑定的常规函数。
我发现的第一种方法就是使用:$scope.myFunction = function(){}
但是可以直接从视图中使用它的事实似乎不正确。
我发现的第二种方法是只使用常规的 Javascript 函数:function myFunction(){}
但我不知道此类函数在 AngularJS 中的可见性如何。
是否有“正确”的方法来确保控制器内部的可见性有限?还是我应该继续使用常规的 Javascript 函数?
javascript - 声明性模板有哪些优点/缺点?ViewModel 方法?
在谈论 angularjs 中的声明性语法时,我们通常会提到指令,以及我们如何将$scope
属性传递到这些指令中以进行处理、DOM 操作、数据收集以及可能的各种组合。
但是,目前我正在努力说服我的团队(更不用说我自己)声明性模板是正确的方法。这并不一定意味着使用指令,而是如何使用指令。
以下控制器/模板对显示了一个示例,其中我根据“模型”/$scope 的属性显示一个元素。
但另一种方法可能看起来像这样
该名称是可能的夸张版本,isReady
但hasAll
重点是表明有时 html 需要多个ng-class
属性,而各种逻辑将依赖于$scope
属性。
我主要看到第一个例子是人们通常使用的——除非逻辑变得非常复杂。另外,我也知道 angularjs 是一个 MVW,但这对我没有帮助。
有时我应该只$scope
在控制器中添加“ViewModel”(表示逻辑)吗?每时每刻?绝不?将表示逻辑放入控制器/模板的优点/缺点是什么?
angularjs - Single controller to handle resolves in two routes, collection and single in angularjs
This might be a common problem that a angularjs dev will encounter, and I don't know if this was already been answered in the past, a brief searching doesn't give me results.
Okay, I have 2 related routes, likes so:
The problem with this is that if I access the route /user
, the controller requires two 2 provider, users and user.
Do you recommend having 2 separate controllers for this, if yes, how do you usually name your controllers, but I don't think its nice to have 2 different controllers, since it is not totally different, same domain still.
angularjs - 为什么 AngularJS 被认为是 MV*
我曾在后端(Rails)上使用 MVC,目前正在前端(Angular)上使用 MVC(MV*)。我已经看到 Angular 被认为是一种 MV* 模式,但为什么它被认为是这样呢?
使用 Angular,我理解关注点的分离,使用视图(模板)、控制器,并使用服务来提供数据。在这种情况下,通过 ng-model 的模型(数据存储)对于前端临时存储是有意义的,但实际的持久性(当对 API 进行 POST 或 PUT 时)似乎是通配符。由于数据可以持久化的方式,可以以不同的方式处理(数据库、firebase 等)。
根据我的理解,在我看来 *VC 更合适,因为 Angular 中的控制器比模型定义得更好。
MV* 模式一定有一些我遗漏或困惑的核心,任何澄清都非常感谢。
javascript - aurelia 视图中的过滤器数组
我正在使用aurelia并希望在视图中而不是在视图模型中过滤集合(数组)。
我正在尝试以下语法来做到这一点:
我在浏览器控制台中收到以下错误:
Error: Parser Error: Missing expected ) at column 28 in [errors.filter(function(err){return err.Key==='car.Model';]
.
这在 angularJS 中是可能的,如下所示:
类似的事情在aurelia也可能吗?
我也很想知道如何repeat.for
在 aurelia 中过滤集合/数组(类似于ng-repeat
)。我尝试以类似的方式使用过滤器功能,但它也不起作用,并且出现了类似的错误。
backbone.js - 模型和视图在backbone.js 中是如何连接的
我是 Backbone.js 的新手,我一直无法理解模型和视图是如何连接的。
我玩过 Angular,那里的东西很清楚,模型、视图和控制器是如何连接的。
我知道 Angular 和 Backbone 是不同的,后者是 MV*。
在 Backbone 中,我可以理解模型和视图是如何创建和工作的,但它们是如何连接的?在我看来,他们是分开的。
请花一点时间来解释或指向我的教程。
提前致谢
编辑
好的,这是一个例子。碰巧我读了巨魔建议的书。这是来自本书 github的代码
我开始阅读。我理解Todo
模型。我了解TodoList
收藏。然后我到TodoView
- 创建一个新的
li
- 使用下划线模板编译html
- 定义了一些稍后在同一视图中实现的函数
- 定义一个初始化函数
在那个函数里面
这是什么?this.model.bind('change', this.render, this);
他如何神奇地将动作绑定change
到模型?代码如何知道模型?他是什么时候定义模型的,又是如何定义的?正因为有,代码才知道model
=Todo
模型?
他是怎么做到的?我错过了什么。这让我很困惑,所以阅读AppView
视图对我没有多大帮助
再次感谢
javascript - 涉及 ES6 的 Angularjs MV* (MVW) 设计模式 - AngularJS
我已经阅读了 Izhaki 和 Artem Platonov 关于理解设计模式的这些答案,并对这种方法有一些疑问。它们可能微不足道,但我需要一些答案。
Itzhaki 的最终回答让我觉得 Angularjs 设计模式有点像 MVW(模型视图),但我认为我仍然没有完全掌握“模型”。
View(DOM) -> Controller -> Service(Application login) -> Model(like resource)
如果这种模式是这样发展的,那么关于整个系统的所有信息在哪里?
例如:假设我们有一些关于“游戏”的属性,例如玩家数量、组数等。
所有这些数据都封装在哪里?
使用 es6 JS,我正在考虑制作一个名为 Game 的类,它有自己的属性;
我需要在哪里找到这个类?
angularjs - 比较 MVVM WPF 和 MVC/MVVM AngularJS
WPF 中的 MVVM 架构似乎是可以理解的。
- MVVM模式中的模型封装了业务逻辑和数据。(是专门负责业务登录和数据的类)
- 视图的职责是定义用户在屏幕上看到的结构和外观。(通过有一个 XAML 页面来实现)
- MVVM模式中的视图模型封装了视图的展示逻辑和数据。(是一个专门负责展示登录的类)
现在让我们将其与 Angularjs 设计模式 MVC/MVVM 进行比较。
视图是 DOM(html)。
视图模型是:
$scope对象可以被认为是被我们称为控制器的函数修饰的ViewModel 。
问题来了
这个 AngularJS 设计模式中的模型是什么?
我知道也许服务应该是模型?有人可以告诉我吗?
顺便说一句,我想使用 ES6 Class 作为我们在 MVVM WPF 设计模式中讨论的模型,其中模型是 Class。