2017-06-20 66 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但要小心,因爲底層陣列仍可能是一個參考,所以你想克隆它,但是這是一個顯著性能命中+深不變性可能無法得到保證,除非你也可以在數組中克隆項目

相關問題