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

时间:2015-10-07 01:04:40

标签: javascript knockout.js knockout-mvc knockout-3.0

我有以下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()函数或建议任何解决方法,我真的很感激。

1 个答案:

答案 0 :(得分:2)

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

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