MVVM模式 - 仅适用于View的公共方法和属性

时间:2017-06-20 20:23:30

标签: typescript design-patterns mvvm

使用MVVM模式,我将View绑定的方法和属性设置为public。

感觉这些应该只对视图公开,而不是其他任何地方。几乎像一个受保护的概念。但是,你想要一些可以被其他类使用的公共方法,所以它会变得混乱。

我正在编写TypeScript,所以我可以真正访问我想要的任何方法/属性,但是在C#这样的语言中,我猜你会必须将viewodel属性公开为视图和真的有这个问题。

视图模型:

class viewModel {
  private mode = "Editable";
  // this is only meant for the view. but it's public so it could be tampered with.
  public items = ko.observableArray();
  // this is meant to be used by other code.
  public setMode(mode) {
    this.mode = mode;
  }
  private _datasvc = new someDataService();
  constructor() {
    this.items = this._datsvc.getItems();
  }
}

我是不是正确理解或使用MVVM?

1 个答案:

答案 0 :(得分:0)

  

我是不是正确理解或使用MVVM?

在MVVM核心概念中,视图模型公开了可以由视图更改的内容。所以隐藏它不是由MVVM 决定的

那就是说,事情要么是公开的,要么是私人的。使用squash,您可以阅读。

你可以做的是使用public,但要小心,因为底层数组可能仍然是引用,所以你想要克隆它,但这是一个重大的性能打击除非您克隆数组中的,否则可能无法保证+深度不变性。