Knockout JS - 数据绑定多个值

use*_*111 5 javascript knockout.js

关于JS Knockout库的问题 - 我有三个输入,所有数据都绑定到同一个变量.两个的布尔值为false,一个布尔值为true.(不幸的是,我无法将它们改为整体,这会使这个问题变得更容易).虽然这两个虚假输入共享行为,但我需要以某种方式区分它们以触发稍微不同的行为.

是否可以将每个数据绑定到另一个具有不同值的变量?而不是每个人

    <input data-Bind="checked:test" value="false">
Run Code Online (Sandbox Code Playgroud)

我会有类似的东西

    <input data-Bind="test, test2" value="false, 1">
Run Code Online (Sandbox Code Playgroud)

    <input data-Bind="test, test2" value="false, 2">?
Run Code Online (Sandbox Code Playgroud)

我直接尝试了,但没有用,所以我不知道是否可能.非常感谢.

Luf*_*ffy 4

您无法直接绑定多个变量,但创建自定义绑定函数可以为您解决问题。

\n\n
\n

示例 : http://jsfiddle.net/gurkavcu/ePW8Y/
\n ** 更改输入值 (true , false) 以触发更新功能

\n
\n\n

超文本标记语言

\n\n
<input data-bind="customData: test , v1 : test2"/>\n<div>\n    <span data-bind ="text : test"/>\n</div>\n<div>\n    <span data-bind ="text : test2"/>\n</div>\n
Run Code Online (Sandbox Code Playgroud)\n\n

JS

\n\n
ko.bindingHandlers.customData = {\n      init: function(element, valueAccessor, allBindingsAccessor, viewModel) {  \n           $(element).change(function () {\n                valueAccessor()(element.value);\n            });       \n      },\n       update: function(element, valueAccessor, allBindingsAccessor, viewModel) {\n          var value =ko.utils.unwrapObservable(valueAccessor());\n          var v1 = allBindingsAccessor().v1;\n\n          if(value === "true") {\n             v1("1"); \n             console.log(v1());\n          }\n          else  if(value === "false") {\n             v1("2"); \n             console.log(v1());\n          }\n     }\n};  \n\n\nfunction ViewModel() {\n\n    this.test =  ko.observable(false);\n    this.test2 =  ko.observable("2");\n\n};\n\n$(function() {  \n\n    var viewModel = new ViewModel();\n    ko.applyBindings(viewModel); \n\n})\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

根据您的需要修改更新功能。您可以使用 v1 : ... 、 v2 : ... 、 v3 : ... 将任意数量的变量添加到绑定中,并通过 allBindingsAccessor().v1 、 allBindingsAccessor().v2 、 allBindingsAccessor().v3 访问它

\n