在MVVM中绑定而不触发

时间:2018-04-25 12:01:10

标签: ios swift mvvm

首先,抱歉标题不清楚!我找不到更好地描述我的问题的方法。

我现在正在学习MVVM,我有一个问题,因为我很难理解它。

我有一个班级Bindable

class Bindable<T> {
typealias Listener = ((T) -> Void)
var listener: Listener?

var value: T {
    didSet {
        listener?(value)
    }
}

init(_ v: T) {
    self.value = v
}

func bind(_ listener: Listener?) {
    self.listener = listener
}

func bindAndFire(_ listener: Listener?) {
    self.listener = listener
    listener?(value)
}
}

正如您所见,我有bindbindAndFire方法。我完全理解为什么我们使用bindAndFire,因为它更改value参数以便我们可以使用它,但我唯一不理解的是为什么我们有时需要使用bind方法?

例如:

viewModel?.showLoadingHud.bind {
        PKHUD.sharedHUD.contentView = PKHUDSystemActivityIndicatorView()
        $0 ? PKHUD.sharedHUD.show() : PKHUD.sharedHUD.hide()
    }

它只会设置listener参数,而不会设置其他内容。 你能解释为什么我们只需要绑定而不改变它的价值吗?

非常感谢你!

0 个答案:

没有答案