繁体   English   中英

为什么在返回的RequireJS函数中声明使用Click绑定时未定义

[英]Why is Click binding undefined when using this declared in a returned RequireJS function

我正在使用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">

this内部/外部viewModelA根据调用函数的方式而有所不同。 您正在返回被其他人调用的viewModelA。

尝试这个

return function viewModelA() {
    var self = this;    
    self.SelectedTableRow = function(selectedRowData){
        // Do something with return value
    };
}.bind(this)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM