将淘汰ViewMode从函数暴露给另一个函数

时间:2013-03-26 15:06:35

标签: javascript jquery knockout.js

我有下一个情况......

由于某些原因,我需要在函数内绑定knockout ViewModel并按特定条件调用它。

这是我的代码:

if (... some conditions ...) {
        var polugodiste = $("#polugodiste").val();

        ApplyBindingsIzostanak(polugodiste); 

        $('#flip-min').change(function () {
            IzostanakViewModel.selectedPolugodiste(parseInt($(this).val()));
            IzostanakViewModel.GetIzostanci();
        });     
    }

和功能:

function ApplyBindingsIzostanak(polugodiste)
{
    var Izostanak = function (cas, tekst) {
        this.Cas = cas;
        this.Tekst = tekst;
    };

    var IzostanakViewModel = {
        selectedStatus: ko.observable(),
        selectedPolugodiste: ko.observable(polugodiste),
        ucenikIzostanakList: ko.observableArray([]),
        GetIzostanci: function () {
            .. do some code ...
        }
    };

    ko.applyBindings(IzostanakViewModel);
}

绑定工作正常,但是当我尝试在IzostanakViewModel内调用if时出现错误,它说 IzostanakViewModel未定义。

我可以以及如何从函数中公开 IzostanakViewModel 并在if语句中使用它吗?

注意*

我可以尝试这样的事情:

将此代码添加到ApplyBindingsIzostanak()

window.foo = function() {
 IzostanakViewMode.GetIzostanci();
}

然后从 if 语句中调用它,但也许有更好的解决方案......

1 个答案:

答案 0 :(得分:1)

IzostanakViewModelApplyBindingsIzostanak()函数中的变量。你为什么不把它归还给你引用呢?

function ApplyBindingsIzostanak(polugodiste)
    // ...
    return IzostanakViewModel;
}
var IzostanakViewModel = ApplyBindingsIzostanak(polugodiste); 

$('#flip-min').change(function () {
    IzostanakViewModel.selectedPolugodiste(parseInt($(this).val()));
    IzostanakViewModel.GetIzostanci();
});