问题标签 [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.

0 投票
5 回答
171539 浏览

angularjs - MVW 代表什么?

这是 AngularJS 页面的内容描述:

AngularJS 本来就是 ​​HTML,如果它是为构建 web 应用程序而设计的。具有数据绑定、MVW、MVVM、MVC、依赖注入和出色的可测试性故事的声明式模板全部使用纯客户端 JavaScript 实现!

那么 MVW 代表什么?(考虑到 MVC、MVVW、MVP 等争吵,我猜“随便”,Model-View-Whatever =P)

0 投票
1 回答
2129 浏览

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 委托人/动作。

0 投票
1 回答
1794 浏览

javascript - 你应该如何在 AngularJS 中定义常规函数

我在 AngularJS 方面有一些经验,但我不知道如何处理 AngularJS 控制器中的常规函数​​这一事实一直困扰着我。为了记录,我正在谈论一个处理控制器内部部分小型业务逻辑的函数,不需要在控制器之间共享。我找到了两种方法来处理不需要从视图绑定的常规函数​​。

我发现的第一种方法就是使用:$scope.myFunction = function(){}但是可以直接从视图中使用它的事实似乎不正确。

我发现的第二种方法是只使用常规的 Javascript 函数:function myFunction(){}但我不知道此类函数在 AngularJS 中的可见性如何。

是否有“正确”的方法来确保控制器内部的可见性有限?还是我应该继续使用常规的 Javascript 函数?

0 投票
0 回答
1381 浏览

javascript - 声明性模板有哪些优点/缺点?ViewModel 方法?

在谈论 angularjs 中的声明性语法时,我们通常会提到指令,以及我们如何将$scope属性传递到这些指令中以进行处理、DOM 操作、数据收集以及可能的各种组合。

但是,目前我正在努力说服我的团队(更不用说我自己)声明性模板是正确的方法。这并不一定意味着使用指令,而是如何使用指令。

以下控制器/模板对显示了一个示例,其中我根据“模型”/$scope 的属性显示一个元素。

但另一种方法可能看起来像这样

该名称是可能的夸张版本,isReadyhasAll重点是表明有时 html 需要多个ng-class属性,而各种逻辑将依赖于$scope属性。

我主要看到第一个例子是人们通常使用的——除非逻辑变得非常复杂。另外,我也知道 angularjs 是一个 MVW,但这对我没有帮助。

有时我应该只$scope在控制器中添加“ViewModel”(表示逻辑)吗?每时每刻?绝不?将表示逻辑放入控制器/模板的优点/缺点是什么?

0 投票
0 回答
47 浏览

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.

0 投票
1 回答
198 浏览

angularjs - 为什么 AngularJS 被认为是 MV*

我曾在后端(Rails)上使用 MVC,目前正在前端(Angular)上使用 MVC(MV*)。我已经看到 Angular 被认为是一种 MV* 模式,但为什么它被认为是这样呢?

使用 Angular,我理解关注点的分离,使用视图(模板)、控制器,并使用服务来提供数据。在这种情况下,通过 ng-model 的模型(数据存储)对于前端临时存储是有意义的,但实际的持久性(当对 API 进行 POST 或 PUT 时)似乎是通配符。由于数据可以持久化的方式,可以以不同的方式处理(数据库、firebase 等)。

根据我的理解,在我看来 *VC 更合适,因为 Angular 中的控制器比模型定义得更好。

MV* 模式一定有一些我遗漏或困惑的核心,任何澄清都非常感谢。

0 投票
2 回答
9530 浏览

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)。我尝试以类似的方式使用过滤器功能,但它也不起作用,并且出现了类似的错误。

0 投票
3 回答
1300 浏览

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视图对我没有多大帮助

再次感谢

0 投票
0 回答
207 浏览

javascript - 涉及 ES6 的 Angularjs MV* (MVW) 设计模式 - AngularJS

我已经阅读了 Izhaki 和 Artem Platonov 关于理解设计模式的这些答案,并对这种方法有一些疑问。它们可能微不足道,但我需要一些答案。

Itzhaki 的最终回答让我觉得 Angularjs 设计模式有点像 MVW(模型视图),但我认为我仍然没有完全掌握“模型”。

View(DOM) -> Controller -> Service(Application login) -> Model(like resource)

如果这种模式是这样发展的,那么关于整个系统的所有信息在哪里?

例如:假设我们有一些关于“游戏”的属性,例如玩家数量、组数等。

所有这些数据都封装在哪里?

使用 es6 JS,我正在考虑制作一个名为 Game 的类,它有自己的属性;

我需要在哪里找到这个类?

0 投票
1 回答
726 浏览

angularjs - 比较 MVVM WPF 和 MVC/MVVM AngularJS

WPF 中的 MVVM 架构似乎是可以理解的。

  1. MVVM模式中的模型封装了业务逻辑和数据。(是专门负责业务登录和数据的类
  2. 视图的职责是定义用户在屏幕上看到的结构和外观。(通过有一个 XAML 页面来实现
  3. MVVM模式中的视图模型封装了视图的展示逻辑和数据。(是一个专门负责展示登录的类

现在让我们将其与 Angularjs 设计模式 MVC/MVVM 进行比较。

  1. 视图是 DOM(html)。

  2. 视图模型是:

$scope对象可以被认为是被我们称为控制器的函数修饰的ViewModel 。

问题来了

这个 AngularJS 设计模式中的模型是什么?

我知道也许服务应该是模型?有人可以告诉我吗?

顺便说一句,我想使用 ES6 Class 作为我们在 MVVM WPF 设计模式中讨论的模型,其中模型是 Class