0
我正在使用Require JS,如下面的代碼所示。但是,如果我在返回的函數中聲明瞭這一點,我無法使點擊綁定工作。 如果我將此置於函數的外部,代碼將起作用。爲什麼在返回的RequireJS函數中使用聲明的時候點擊綁定是undefined
這不起作用:
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">
感謝我的朋友,我也發現,我被實例化,這意味着我是結合不同的實例功能的新實例。所以,而不是'var vma = new viewModelA();'我只是在做:'ko.applyBindings(viewModelA,document.getElementById('section-a'));'這個或者沒有'bind(this) 。 – Asynchronous