0

次の状況があります...

いくつかの理由で、関数内でノックアウト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ステートメントからそれを呼び出しますが、おそらくより良い解決策があります...

4

1 に答える 1

1

IzostanakViewModel関数内の変数ですApplyBindingsIzostanak()。参照できるように、返品してみませんか?

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

$('#flip-min').change(function () {
    IzostanakViewModel.selectedPolugodiste(parseInt($(this).val()));
    IzostanakViewModel.GetIzostanci();
});     
于 2013-03-26T15:28:58.577 に答える