Knockout.js 淘汰-具有启用功能的Foreach函数
我目前有一个带有数据绑定foreach语句的div。在这个div中有一个按钮,它使用“click:$parent.loadWebcam”。所有这些都起作用,loadWebcam函数被调用,它将从foreach传递数据并处理按下的按钮 我试图实现的是以同样的方式使用enable数据绑定。我希望它将数据从父级传递到一个名为“IsButtonneEnabled”的函数,但是,它似乎没有按照我希望的方式工作。这是我为isButtonEnabled构建的函数,我是否遗漏了什么?或者启用数据绑定不能以这种方式使用吗Knockout.js 淘汰-具有启用功能的Foreach函数,knockout.js,Knockout.js,我目前有一个带有数据绑定foreach语句的div。在这个div中有一个按钮,它使用“click:$parent.loadWebcam”。所有这些都起作用,loadWebcam函数被调用,它将从foreach传递数据并处理按下的按钮 我试图实现的是以同样的方式使用enable数据绑定。我希望它将数据从父级传递到一个名为“IsButtonneEnabled”的函数,但是,它似乎没有按照我希望的方式工作。这是我为isButtonEnabled构建的函数,我是否遗漏了什么?或者启用数据绑定不能以这种方
var currentStream = "";
self.isButtonEnabled = function(profile) {
return ko.observable(ko.toJS(profile).URL != currentStream);
};
页面上的剪贴画如下:
<div class="jog-panel" id="camControl">
<h1>Webcams</h1>
<div data-bind="foreach: settings.settings.plugins.multicam.multicam_profiles">
<button class="btn btn-block control-box" data-bind="click: $parent.loadWebcam, text: name, enable: $parent.isButtonEnabled">Default (before bind)</button>
</div>
</div>
网络摄像机
默认值(绑定前)
谢谢我建议,因为您希望在单击按钮时更新启用状态,所以您可以将该逻辑添加到单击事件中,而不是使用单独的功能。
isButtonEnabled
可以是一个正常的可观察变量,而不是一个函数,并且该变量通过单击事件更新
self.loadWebcam = function(profile) {
profile.isButtonEnabled(ko.toJS(profile).URL != currentStream);
console.log(ko.toJS(profile).URL);
};
var currentStream=“测试url”;
函数viewModel(){
var self=这个;
var profile1={URL:'test URL',name:'test profile',isButtonEnabled:ko.observable(true)};//测试数据
var profile2={URL:'other URL',name:'other profile',isButtonEnabled:ko.observable(true)};//测试数据
self.multicam_profiles=ko.observatarray([profile1,profile2]);
self.loadWebcam=功能(配置文件){
profile.isButtonEnabled(ko.toJS(profile.URL!=currentStream);
log(ko.toJS(profile.URL);
};
}
应用绑定(新的viewModel())代码>
currentStream:“测试”
网络摄像机
默认值(绑定前)
您在配置文件参数的IsButtonneEnabled函数中获得了哪些数据?该函数是否被点击了?到目前为止,它似乎还没有被调用,或者至少它没有显示任何console.log消息。我从click数据绑定中知道,它会得到一个敲除数组,其中包含所单击按钮的名称和URL。enable绑定更多的是用于控制DOM元素是否可根据模型中的布尔可观察值进行更新。正如您现在配置的那样,我不确定该函数何时会被调用。您希望该功能何时启动?什么用户操作会导致启用状态的更改?我希望每次按下一个按钮时都会更改。这就是我至少更新currentStream的值的时候。关键是要禁用与currentStream具有相同URL值的按钮,因为该流将已加载。这似乎确实使数据绑定实际工作,但它最终禁用了我的foreach中的每个按钮,而不仅仅是单击的按钮。@MichaelMorris啊,是的,我的错误。每个按钮都需要自己的“IsButtonneEnabled”可观察。我会更新我的样品