完全不确定我以前是否理解,现在不了解它,或者如果我现在不理解它,现在我开始...或者我是否仍然不知道。

我正在构建一个允许用户预订约会的应用程序。

屏幕1:选择位置和服务类型(选项列表,确认并继续的按钮)

屏幕2:选择可用的约会时间(表格,确认和继续的按钮)

屏幕3:输入姓名和联系信息(文本输入,确认和继续的按钮)

屏幕4:输入验证码(发短信给用户,按钮确认并继续)

屏幕5:显示确认代码

我之所以进行重构,是因为我意识到所有内容都在ViewModel中,并且不确定我的模型属于什么以及ViewModel属于什么。我只是将selectedLocation(用户从列表中选择的项目)放在模型中,但是我需要View可以访问它,所以我这样做了:

self.selectedLocation = ko.pureComputed({
    read: function() {
        return self.model.selectedLocation();
    },
    write: function(value){
        self.model.selectedLocation(value);
    }
});

这似乎只是傻瓜。

这应该只是在ViewModel中吗?我应该在模型中有一个selectedLocation变量,在ViewModel中有一个currentSelectedLocation,当用户确认“位置和服务类型”时,该模型然后更新model.selectedLocation吗?

每个单独的屏幕都应该有自己的 View 模型吗?我正在使用单个.html文件并更新显示的内容,而不是逐页浏览。

我确定我没有提供任何重要的信息,对不起,很高兴回答任何问题。

任何帮助将不胜感激。

最佳答案

关于可观察对象的很酷的事情是,您可以只在其他对象中使用它们:

self.selectedLocation = self.model.selectedLocation;

但是我建议直接绑定(bind)到model.selectedLocation也可以。在 knockout 中,无需区分模型/ View 模型。一切都是 View 模型。

关于javascript - 以为我了解Knockout.js,现在我不太确定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43903668/

10-12 12:21