我无法在此特定页面上使用$ root访问方法。此代码适用于我的其他页面,但我不明白。我每页有一个viewmodel。它找不到removeAttachment。
knockout-3.4.0.js:72 Uncaught TypeError:无法处理绑定" click:function(){return $ data.bind.removeAttachment($ data,event,$ index)}" 消息:无法读取属性' removeAttachment'未定义的
var model = function AppViewModel(){
self.removeAttachment = function(data, event, attachmentClicked){
fileNameToDelete = attachmentClicked;
$("deleteText").append(" " + attachmentClicked + "?");
$('#delete-confirm').modal('show');
};
};
var app = new model();
ko.applyBindings(app, document.getElementById("panel"));
<div id="panel">
<tbody class="types">
<!-- ko foreach: multiFileData().fileArray -->
<tr>
<td><span class="attachName" data-bind="text:name"></span></td>
<td><span class="attachName" data-bind="$parent.sizeInMB: size"></span></td>
<td id="remove" class="glyphicon glyphicon-trash" data-toggle="modal" data-target="delete-confirm"
data-bind="click:$root.bind.removeAttachment($data, event, $index)"> </td>
</tr>
<!-- /ko -->
</tbody>
</div>
答案 0 :(得分:1)
你可能想要:
click: $root.removeAttachment
如果您需要传递额外的参数:
click: $root.removeAttachment.bind($root, $index)
传递给函数的第一个和第二个参数将始终为$data
和event
。使用bind
,您可以将它们推回并传入新的第一个参数(以及设置this
值)。
此外,您还需要确保在视图模型中实际设置了removeAttachment
。
var model = function AppViewModel() {
var self = this;
self.removeAttachment = ...
};