使用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?
答案 0 :(得分:0)
我是不是正确理解或使用MVVM?
在MVVM核心概念中,视图模型公开了可以由视图更改的内容。所以隐藏它不是由MVVM 决定的。
那就是说,事情要么是公开的,要么是私人的。使用squash
,您可以阅读。
你可以做的是使用public
,但要小心,因为底层数组可能仍然是引用,所以你想要克隆它,但这是一个重大的性能打击除非您克隆数组中的项,否则可能无法保证+深度不变性。