如何获取对视图模型的引用

How to get reference to viewmodel

(我是单页应用和淘汰赛的新手,但熟悉 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.
}

将 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"/>