gpt4 book ai didi

typescript - MVVM 模式 - 公共(public)方法和属性仅适用于 View

转载 作者:行者123 更新时间:2023-12-03 10:43:06 25 4
gpt4 key购买 nike

使用 MVVM 模式,我将 View 绑定(bind)到的方法和属性设为公开。

感觉这些应该只对 View 公开,而不是在其他任何地方。几乎就像一个 protected 概念。但是,您还需要一些可以被其他类使用的公共(public)方法,所以它有点困惑。

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

View 模型:

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

最佳答案

Am I just not understanding or using MVVM correctly?



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

也就是说,事情要么是公共(public)的,要么是私有(private)的。与 public你得到读写。

你可以做的是使用 getter但要小心,因为底层数组可能仍然是一个引用,所以你会想要克隆它,但这是一个显着的性能损失 + 除非你也克隆数组中的项目,否则可能无法保证深度不变性。

关于typescript - MVVM 模式 - 公共(public)方法和属性仅适用于 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44662358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com