在ViewModel中使用getter而不是订阅Model

时间:2018-08-30 21:36:27

标签: javascript design-patterns model viewmodel

那一周,我得知我们可以在javascript中使用getter / setter。 因此,我尝试在当前代码中使用它。

现在,我的ViewModel注册到Model,以便在Model更改时得到通知。

使用吸气剂,我可以得到它的RID并简单地将模型中字段的值返回给viewModel。

例如:

Model = {
field: aValue
}

ViewModel = {}
 Object.defineProperty(ViewModel , aField{
      get: function () {
        return Model.field;
             });
         }
    });

我是对的吗?可以吗?

1 个答案:

答案 0 :(得分:0)

SynchroDynamic很好地说明了代码的可读性以及系统开发过程中可能出现的复杂性。

大概您正在使用某种提供数据绑定机制的框架。数据绑定通常是基于更改事件的自动过程。对于双向绑定,如果数据发生更改,并且绑定对的 source target source target < / strong>还必须对这些事件做出响应(通过注册它们),以便数据保持同步。

Am I right?

是的,您可以(在可能的意义上)使用get / set等并禁用框架的数据绑定机制是正确的。

is it ok?

除了最琐碎的情况外,可能不是全部。

1)如果您使用的是支持数据绑定的框架,那么当可以使用一种完善的(有文档证明的)机制时,您的代码的其他读者将会对为什么采用这种方法感到困惑。

2)正如SynchroDynamic所指出的那样,当视图和viewModel的数量增加时,事情将很快失去控制,您将不得不手动跟踪获取/设置。

3)单元测试也可能变得更加复杂!