从另一个函数内部调用ViewModel函数

KnockoutJS Calling ViewModel function from inside another function

本文关键字:函数 ViewModel 调用 内部 另一个      更新时间:2023-09-26

我有以下ViewModel,其中我有几个函数。我正试图调用位于同一ViewModel中的另一个函数。

这是我的ViewModel:

var UploadFileListVewModel = function() {
var self = this;

里面有一个init函数:

//initialize view model
this.init = function () {
    $.ajax({
        url: '/Files/LastUploadedFiles',
        type: 'POST',
        cache: false,
        data: {},
    }).done(function (result) {
        //doing stuff 
    });
}   

稍后,我执行一个删除文件操作,一旦它完成,我想再次运行我的init函数

self.removeFile = function(item)
{
    $('#fileModal').modal('hide'); //closing modal dialog       
    $.ajax({
        //url: '@Url.Action("RemoveFile", "Files")',
        url: '/Files/RemoveFile',
        type: 'POST',
        data: { 'file_id': self.fileToRemoveId() },
        cache: false
    }).done(function (result) {
    //doing stuff 
    this.init();
    });     
}

我得到一个错误this.init() is not a function .

我真的很感激如果有人能指出我正确的方向如何调用这个init()函数或建议任何解决方案。

回调函数中的this关键字不是您的ViewModel。这就是为什么你创建了self,所以你可以在事件,数组,回调函数等中使用它。

因此,您应该将代码更改为self.init()