MVVM 模式 - 仅用于视图的公共方法和属性



使用 MVVM 模式,我将视图绑定到的方法和属性设置为公共。

感觉这些应该只对视图公开,而不是其他任何地方。几乎就像一个受保护的概念。但是,您需要一些可供其他类使用的公共方法,因此它变得有点混乱。

我正在编写 TypeScript,所以我可以真正访问我想要的任何方法/属性,但在像 C# 这样的语言中,我猜你必须视图属性公开为视图的公共属性,并且真正遇到这个问题。

视图模型:

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 吗?

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

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

也就是说,事情要么是公共的,要么是私人的。有了public,你就可以读写。

您可以做的是使用getter但要小心,因为底层数组可能仍然是引用,因此您需要克隆它,但这是一个显着的性能影响 + 深度不变性可能无法保证,除非您克隆数组中的项目

最新更新