问题标签 [knockout-binding-handlers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
220 浏览

html - 敲除在点击文本时切换/展开文本

使用敲除将数据绑定到 html 表中。其中一列的大文本长度为 200 .. 并且 UI 刚刚滚动很长。所以只想显示,前 20 个长度的字符并单击,...它应该展开或折叠文本。所以刚刚在下面创建了一个模板,

它不起作用事件,只是呈现与上面相同的文本。

编辑:如何在点击时切换展开或折叠文本(评论值)...

0 投票
1 回答
32 浏览

javascript - 为什么以这种方式更改此格式化函数会导致 Knockout 绑定开始工作?

我在页面上有一个元素,如下所示:

计算它的函数我首先是这样写的:

我在圈子里转了几个小时想知道为什么页面上的文本只是卡在“尚未设置”,不管滑块设置是什么,但是<span data-bind="text: Params().ChosenCount"></span>作为测试添加的另一个元素正在完美更新,而其他地方的另一个滑块是使用类似的逻辑设置小时和分钟的持续时间就可以了:


在各个地方添加一些控制台日志记录很明显,在第一次调用FormattedCountOfPeople返回“尚未设置”之后,FormattedCountOfPeople拖动人员计数滑块时再也没有调用过。直接绑定到原始数​​据的另一个跨度Params().ChosenCount将不断更新,因此值变化正常。同样,绑定到的滑块Params().ChosenDuration正在更新值,并且FormattedDuration()每次值更改时都会被调用,并提供一个新的格式化字符串以进入跨度

最后,使事情正常进行的代码更改似乎非常无关紧要。我删除了初始if并将其交换为内联条件:

为什么做出这个改变突然意味着FormattedCountOfPeople每次值改变时都开始调用淘汰赛?我能看到的唯一真正不同的是,FormattedDurationText它的结构使得它总是Params().ChosenDuration()在决定值不好并返回之前调用,""而第一个版本的FormattedCountOfPeople行为偶尔决定不调用任何东西,而第二个版本总是调用。诸如“重置标志”之类的调用是否有副作用Params().Xxx(),如果标志从未重置,那么即使值发生变化,淘汰赛也不会再次调用该函数?