我有下一个情况......
由于某些原因,我需要在函数内绑定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 语句中调用它,但也许有更好的解决方案......
答案 0 :(得分:1)
IzostanakViewModel
是ApplyBindingsIzostanak()
函数中的变量。你为什么不把它归还给你引用呢?
function ApplyBindingsIzostanak(polugodiste)
// ...
return IzostanakViewModel;
}
var IzostanakViewModel = ApplyBindingsIzostanak(polugodiste);
$('#flip-min').change(function () {
IzostanakViewModel.selectedPolugodiste(parseInt($(this).val()));
IzostanakViewModel.GetIzostanci();
});