【问题标题】:How to call a function inside a data-bind?如何在数据绑定中调用函数?
【发布时间】:2020-01-03 15:30:27
【问题描述】:

点击按钮后如何在此视图代码sn-p中再次调用getStatus()函数?

唯一对我有用的是刷新整个页面。

<div id="statusContainter"data-bind="css:$data.getStatus('Rendered Approval')">&nbsp;</div>

基本上,如果我单击一个按钮,我希望getStatus('Rendered Approval') 触发。该函数在页面的初始呈现期间触发。但我不想刷新整个页面来触发该功能

【问题讨论】:

  • 你想达到什么目的?您的代码令人困惑,因为您使用的是 css 绑定但调用了一个名为 getStatus 的函数 - 通常您会使用可观察值来切换 css 绑定中的不同类,而不是调用带有参数的函数。请你能更详细地描述一下你想要做什么吗?
  • 我使用css绑定的原因是因为我需要显示一个状态,如果它是绿色,黄色或红色,我需要实现的是状态从红色变为绿色而不刷新整页

标签: data-binding knockout.js


【解决方案1】:

假设getStatus 是一个可淘汰的可观察代码,那么您在那里的代码设置 值,但只有一次。要获取一个可观察对象的值,您可以调用不带参数的函数。

听起来你是打算这样做的:

<div id="statusContainter"data-bind="css:$data.getStatus()">&nbsp;</div>

<button data-bind="click: $data.getStatus.bind($data, 'Rendered Approval')">Click to Refresh</button>

更新: 正如@Brother Woodrow 提到的,click 绑定需要处理程序的函数。将参数传递给处理程序可以通过将其包装在函数文字中或使用 this 函数作为 described in Note 2 here 来完成。

【讨论】:

  • 那是行不通的,因为点击绑定需要一个函数引用。所以应该是click: $data.getStatus.bind($data, 'Rendered Approval')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
相关资源
最近更新 更多