2017-06-20 36 views
1

使用MVVM模式,我将View绑定到的方法和属性设置为public。MVVM模式 - 仅适用于View的公共方法和属性

感觉这些应该只是公开的观点,而不是其他地方。几乎像一个受保护的概念。而且,你需要一些其他类可以使用的公共方法,所以它会变得混乱。

我正在写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

真的,真的不要浪费你在这种情况下隐藏数据的时间。你没有从中获得任何好处。 – Will

回答

0

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

在MVVM核心概念中,视图模型公开可以被视图改变的东西。所以隐藏这不是由MVVM支配的

也就是说,事情是公开的或私人的。随着public你读得写。

你可以做的是使用getter但要小心,因为底层阵列仍可能是一个参考,所以你想克隆它,但是这是一个显著性能命中+深不变性可能无法得到保证,除非你也可以在数组中克隆项目

相关问题