knockout从输入到函数发送值

时间:2015-02-07 11:02:51

标签: javascript html asp.net-mvc-4 knockout.js asp.net-web-api

我有一个文本框和一个按钮,我想在单击按钮时将文本框中的值发送到函数,但似乎无法解决。

      Reg:<input type="text" placeholder="Enter Reg" data-bind="text: search"  />
<button  class="btn btn-danger" data-bind="click: function () { GJobs(search) }" >Get Jobs</button>

在视图模型中的功能

   self.GJobs = function (search) {
        GetJobs(search)
    }

ajax call

   function GetJobs(search) {
        $.ajax({
            type: "GET",
            url: 'api/mechanicphone',
            data: { reg: search},
            dataType: 'json',
            contentType: 'application/json',
            success: function (data) {
                self.Jobs(data);
            },
            error: function (data) {
                $('#MechMobile').html('<h3>Error in retrieval</h3>');
            }
        });
    }
当我调试

时,传递的reg在get上变为null

1 个答案:

答案 0 :(得分:2)

您的代码中应该更改一些内容。

首先,为了从输入字段返回值,应该使用value绑定而不是`text:

<input type="text" placeholder="Enter Reg" data-bind="value: search"  />

然后理想情况下,您的点击处理程序应该在视图模型中调用函数,然后可以获取可观察变量search的值。总的来说,您可以像这样更新HTML代码:

Reg:<input type="text" placeholder="Enter Reg" data-bind="value: search"  />
<button  class="btn btn-danger" data-bind="click: GJobs" >Get Jobs</button>

您的视图模型如下:

self.GJobs = function () {
    GetJobs(self.search());
}
self.search = ko.observable('');
function GetJobs(searchValue){
    // Call web service
}