如何获取对viewmodel的引用

时间:2015-03-25 13:08:39

标签: knockout.js single-page-application

(对于单页应用程序和淘汰赛来说是新手,但我熟悉WPF / Silverlight中的MVVM概念。)

我有一个名为selectedPayPeriodId的简单viewModel,它使用Knockout绑定到下拉列表。这很有效。

 <select data-bind="options: SelectList, optionsCaption: 'Choose...', optionsText: 'Text', optionsValue: 'Value', value: selectedPayPeriodId"></select>
                <input id="btnRunReport" type="button" class="btn btn-default" value="Run Report" onclick="doTest()" />
                <p>Selected Pay Period Id:<span data-bind="text: selectedPayPeriodId"></span></p>

现在我需要从javascript函数中获取viewModel.selectedPayPeiriodId的值,以便我可以在ajax调用中使用它来从服务器获取json。

这就是我想要做的事情:

var doTest = function() {
    //How to get reference to viewModel?
    alert(viewModel.selectedPayPeriodId); //Error: viewModel is undefined.
}

1 个答案:

答案 0 :(得分:2)

将doTest放入视图模型中,然后使用data-bind: "click: doTest"绑定到它。 http://knockoutjs.com/documentation/click-binding.html

function myViewModel() {
        var self = this;
        this.selectedPayPeriodId = ko.observable();

        this.doTest = function() {
            alert(self.selectedPayPeriodId());
        };
}

并在HTML中:

<input type="button" data-bind="click: doTest"/>