Knockoutjs:无法正确设置初始下拉列表值

时间:2014-05-08 20:09:16

标签: knockout.js drop-down-menu binding subscription

代码太复杂而无法显示,但问题本身相对简单。

我为当地政府开发房产信息系统。用户可以搜索属性并查看有关它的信息。某些属性可以有多个帐户,因此有一个下拉列表,其中填充了选项和用户搜索的帐户。但是,我无法正确设置所选帐户。

这就是原因。我设置了订阅,以便当用户选择其他帐户进行查看时,会显示正确的信息。但是,最初设置绑定时,选项和值绑定都会触发订阅。值绑定的值是正确的,但选项绑定使用数组中的第一项 - 并且总是在值绑定后运行,因此绑定通常是不正确的。

有没有办法编写自定义绑定,因此选项绑定不会引发订阅?或者,有没有办法设置初始绑定,以便它不会启动订阅?

1 个答案:

答案 0 :(得分:1)

没有代码,很难具体。如果您的代码太复杂了,那么您要么做得非常错误,要么做得更糟糕。

没有违法行为,但我试图将消息传达给您,如果设置/获取下拉值所涉及的代码真的那么复杂,您可能刚刚找到了你之所以遇到问题。

我可以给你一些一般的提示:

  1. 设置订阅后设置所有默认值。 没有理由你需要订阅的价值 下拉列表,在下拉列表填充之前。如果你觉得很难 控制订阅的时刻,然后再次,这是一个签署您的代码 比它需要的更复杂。
  2. 。获取数据时,首先填充observableArray 提供下拉列表中的值,然后填充 设置值的可观察值。
  3. 下拉选项的值始终为字符串(因为如何 它们在HTML中定义。如果你的obtions的value-property 不是字符串,可能需要进行转换。
  4. 基本上我认为在这种情况下,你需要1。