【发布时间】:2014-07-08 10:29:30
【问题描述】:
我们正在将现有的 Silverlight 应用程序移植到 AngularJS/Typescript 中。
该应用程序具有经典的 MVVM 结构,其中包含数据模型、视图模型和视图。这些模型在某种程度上是紧密相连的:例如,IObservable<> 事件流会通知容器模型子模型内的变化。
让我感到困惑的是:在 MVVM 中,绑定到视图的所有内容都是视图模型。一个视图模型可能具有它包含的其他视图模型的列表。然而,在所有针对具有 WPF/Silverlight 背景的人的 AngularJS 教程中,只有 $scope 被称为视图模型。嵌套对象呢?它们只是域数据模型,您直接绑定到它们而不需要任何中间视图模型层吗?
然后,还有一个问题:如果我的数据对象发生了某种变化(例如,某些服务在从网络接收数据时对其进行了更新,或者它只是根据计时器进行了一些工作),我如何通知视图它应该更新了吗?
【问题讨论】:
-
在大多数情况下,通过双向数据绑定,您无需通知任何内容,如果
$scope.thing发生更改,{{thing}}将立即在 DOM 中呈现更改。 -
@Pak,如果那里有一个复选框网格,比如
$scope.rows[0].items[1].isEnabled,并且在超时时设置为false,该怎么办? AngularJS 是怎么知道的? -
看看
$watch
标签: c# angularjs silverlight mvvm