【问题标题】:KnockoutJS Calling ViewModel function from inside another functionKnockoutJS 从另一个函数内部调用 ViewModel 函数
【发布时间】:2016-01-04 02:09:43
【问题描述】:

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

【问题讨论】:

  • @Buzinas,这成功了!!!谢谢你。我不敢相信我花了半天时间才弄明白。

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


【解决方案1】:

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

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

【讨论】:

  • 感谢您的解释。现在一切都很好。
猜你喜欢
  • 1970-01-01
  • 2018-06-12
  • 2015-07-04
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 2014-01-01
  • 2017-09-08
  • 2017-05-08
相关资源
最近更新 更多