【问题标题】:Knockout TypeError: m.apply is not a function淘汰赛类型错误:m.apply 不是函数
【发布时间】:2019-03-19 10:25:34
【问题描述】:

下面是带有折叠面板的表格的代码。 click 事件处理程序抛出“m.apply 不是函数”的错误消息。

Quux.CollapseExpandCustom.ToggleSection('+id+') 是接受动态 id 的函数。

请让我知道我犯了什么错误。我需要绑定代码中提到的click事件。

<table id="EditFooList">
    <thead>
        <tr>
            <th>User</th>
            <th>Started Date</th>
            <th>Foo</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody data-bind="foreach: EditedDataArray">
        <tr>
            <td data-bind="text: $data.UserName"></td>
            <td data-bind="text: $data.TimeStampString"></td>
            <td>
                <div>
                    <p data-bind="text: $data.Title, click: $root+'.'+'Quux.CollapseExpandCustom.ToggleSection('+$data.Baz+')'">Foos<img src="~/Images/Collapse.png" /></p>
                    <div>
                        <div data-bind="attr:{id: $data.Baz}">
                            <ul data-bind="foreach: $data.FooDetailViewModels">
                                <li>
                                    <input type="button" data-bind="value: 'Resume -   ' + $data.TimeDate,click: $root.ClickResume , attr:{fooStudyId:$data.FooStudyId}" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <input type="button" data-bind="value: 'Plan -   ' +$data.TimeDate, click: $root.ClickPlan , attr:{fooStudyId:$data.FooStudyId}" />
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </td>
            <td>
                <input type="button"value="New" data-bind="attr:{id: $data.Baz} , click: $root.FooCLick"/>
            </td>
        </tr>
    </tbody>
</table>

【问题讨论】:

  • 你最好在你的 $root 上创建一个函数,它接受一个你想要的参数,而不是尝试在 HTML 中构建它
  • 请不要破坏这个问题,为了未来的用户,人们已经花时间回答了。
  • @PabloAlbornoz - 伙计,你能删除你的帖子吗?根据公司政策,我们不能将公司名称放在 stackoverflow 上 - 非常感谢。
  • @SanJaisy 我不知道你指的是什么。有什么问题吗?

标签: javascript jquery knockout.js


【解决方案1】:

这个答案可能会有所帮助:Knockout click binding strange behavior

基本上,如果你将它包装在一个匿名函数中,它应该会停止错误:

<p data-bind="text: $data.Title, click: function() { $root.Quux.CollapseExpandCustom.ToggleSection($data.Baz); }">Foos<img src="~/Images/Collapse.png" /></p>

但是,正如@Nathan Fisher 所提到的,您最好在视图模型中创建一个处理执行此过程的函数。

另外,我不确定您为什么要通过调用函数来构建字符串。即。

click: $root.Quux.CollapseExpandCustom.ToggleSection($data.Baz)

而不是

click: $root+'.'+'Quux.CollapseExpandCustom.ToggleSection('+$data.Baz+')'

【讨论】:

    【解决方案2】:

    由于您似乎在使用函数,我假设您可能有一个与函数同名的变量($scope.variable),在这种情况下,它将覆盖作用域上已经存在的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-19
      • 2017-04-30
      • 2012-04-08
      • 2015-07-17
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      相关资源
      最近更新 更多