我正在使用 Knockout js。我有一个包含对象数组的视图模型,我希望允许用户使用向导样式界面编辑其中一个对象。我遇到的问题是向导将根据所做的选择显示不同的步骤。例如:
- 如果用户在步骤 1 中选择“是”,则我将显示步骤 2a
- 如果用户在步骤 1 中选择“否”,则我将显示步骤 2b(即不同的对话框形式)
如此下去,使得通过向导的路径不是线性的。
我的问题是我是否在启动时将所有可能的向导 UI 步骤绑定到视图模型即使某些步骤永远不会显示,并且某些屏幕上的绑定将无效(例如,步骤 5 可能绑定到 viewModel.theObject.PropertyA.PropertyB.PropertyC(),但 PropertyB 在步骤 1 中仍然为 null)。
更好的方法可能是在显示的 UI 步骤时绑定到它们,但我的问题是,我不知道在步骤完成后“取消绑定”模型的好方法,因此我最终可能会将步骤绑定到原始列表中的多个对象!
我认为实现此目的的一个好方法是让您的视图模型成为一系列步骤并将您的 UI 绑定到“selectedStep”。然后,每个步骤都可以动态选择它想要使用的模板(就像这样post http://www.knockmeout.net/2011/03/quick-tip-dynamically-changing.html).
这是这个想法的一个粗略示例:http://jsfiddle.net/rniemeyer/SSY6n/ http://jsfiddle.net/rniemeyer/SSY6n/
这样,模板绑定就可以根据选择的任何步骤来处理动态内容的生成/绑定/清理。如果步骤位于 observableArray 中,那么您甚至可以动态添加步骤。也许您有一个所有可能步骤的列表,然后有一个“activeSteps”数组,表示根据用户的选择当前有效的步骤。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)