Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 绑定仅在浏览器刷新后工作_Knockout.js - Fatal编程技术网

Knockout.js 绑定仅在浏览器刷新后工作

Knockout.js 绑定仅在浏览器刷新后工作,knockout.js,Knockout.js,我在的帮助下创建了一个自定义绑定 我有一个页面,在第一次加载页面时不调用绑定,但在刷新页面时调用绑定。(按F5键)对于我拥有的所有其他页面,绑定工作与预期一样,我在其他地方从未见过这种行为 到目前为止,我注意到: 据我所知,视图模型中的数据是相同的 当我在绑定源代码的init函数中设置一个断点时,该断点会在它工作的时间上出现。当它不起作用时,就永远不会达到断点。我真的需要调用预处理,但我一直把断点放在init中,因为它位于文件的顶部。如果我把断点放在预处理函数中,我会得到同样的结果 当我在in

我在的帮助下创建了一个自定义绑定

我有一个页面,在第一次加载页面时不调用绑定,但在刷新页面时调用绑定。(按F5键)对于我拥有的所有其他页面,绑定工作与预期一样,我在其他地方从未见过这种行为

到目前为止,我注意到:

  • 据我所知,视图模型中的数据是相同的
  • 当我在绑定源代码的init函数中设置一个断点时,该断点会在它工作的时间上出现。当它不起作用时,就永远不会达到断点。我真的需要调用预处理,但我一直把断点放在init中,因为它位于文件的顶部。如果我把断点放在预处理函数中,我会得到同样的结果
  • 当我在init函数外部和上方放置断点时,每次都会命中断点。这意味着绑定已创建
  • 这是针对一个表,当我在表上方放置一个span并用toJSON()显示$data时,无论它是否工作,数据看起来都是一样的
我曾尝试创建一个Plunk来演示这一点,但我没有任何运气。(意思是,每次我尝试简化场景时,它总是有效的)

下面是html的外观:(两种情况下的数据绑定看起来相同)


我正在使用一个只有一行的结果集进行测试


那么,什么会导致不调用绑定呢?在knockout-3.1.0.debug.js中,我可以找到以下代码:(第2455行)

当页面无法工作时,自定义绑定尚未加载,因此此函数返回undefined。所以问题根本不在于击倒,而在于执行的顺序


现在要弄清楚为什么加载此自定义绑定的时间与此页面不同,而与其他任何页面不同…

当web控制台没有达到预期效果时,是否有错误输出?您是否确保在应用绑定之前加载页面?@adamdc78,否。正如您可以看到的那样,在每个数据库中都没有数据绑定。在我删除这些之前,我会得到一个错误,但这是由于预处理内部的for-each没有被调用。因此,我简化了s,现在控制台中没有错误,但仍然没有调用自定义绑定。您必须共享更多代码,html标记不足以进行调查。如果可能,请创建一个演示链接(例如使用JSFIDLE)
<tbody data-bind="footable: items">
    <tr class="footable-even" style="display: table-row;">
        <td class="footable-visible footable-first-column"><span class="footable-toggle"></span></td>
        <td class="footable-visible"></td>
        <td class="footable-visible"></td>
        <td class="footable-visible footable-last-column"></td>    
    </tr>
</tbody>
ko['getBindingHandler'] = function(bindingKey) {
    return ko.bindingHandlers[bindingKey];
};