Я использую Require JS, как показано в приведенном ниже коде. Однако я не могу заставить привязку кликов работать, если я объявил это в возвращаемой функции. Если я помещаю это вне функции, код работает.Почему привязка связывания не определена при использовании этого объявления в возвращаемой функции RequireJS
Это не работает:
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