我正在使用Require JS,如下面的代码所示。但是,如果我在返回的函数中声明了这一点,我就无法使click绑定工作 如果我把它放在函数之外,那么代码就可以了。
这不起作用:
return function viewModelA() {
var self = this;
self.SelectedTableRow = function(selectedRowData){
// Do something with return value
};
}
这有效:
var self = this;
return function viewModelA() {
self.SelectedTableRow = function(selectedRowData){
// Do something with return value
};
}
完整代码:
define(function(require){
var $ = require ('jquery');
var ko = require ('knockout');
var viewModelB = require ('ViewModelB/ViewModelB');
var self = this;
return function viewModelA() {
var self = this;
self.member = {};
self.member.countries = ko.observableArray();
$.getJSON('https://restcountries.eu/rest/v1/all', function(data) {
self.member.countries(data);
});
self.SelectedTableRow = function(selectedRowData){
// Do something with return value
};
return{
member: self.member
}
}
});
缩写HTML:
<tbody data-bind="foreach: member.countries">
<tr data-bind="click: SelectedTableRow, clickBubble: false">
答案 0 :(得分:0)
this
viewModelA内部/外部根据函数的调用方式而有所不同。您正在返回由其他人调用的viewModelA。
试试这个
return function viewModelA() {
var self = this;
self.SelectedTableRow = function(selectedRowData){
// Do something with return value
};
}.bind(this)