Knockout.js 淘汰可观察数组不更新UI
我作为WEB服务调用,并获取JSON数据。之后,我使用knockout Js绑定到一个表中。之后,当用户在文本bax中键入内容时,它会过滤数据并显示在UI中。但目前它不起作用。请在下面查找代码Knockout.js 淘汰可观察数组不更新UI,knockout.js,Knockout.js,我作为WEB服务调用,并获取JSON数据。之后,我使用knockout Js绑定到一个表中。之后,当用户在文本bax中键入内容时,它会过滤数据并显示在UI中。但目前它不起作用。请在下面查找代码 <script src="../../Scripts/jquery-1.10.2.min.js"></script> <script src="~/Scripts/knockout-3.3.0.js"></script> @{ ViewBag.Ti
<script src="../../Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/knockout-3.3.0.js"></script>
@{
ViewBag.Title = "AllTasks";
}
<script type="text/javascript">
var viewModel;
var url = 'http://localhost:22653/api/AllTasks';
$(document).ready(function () {
debugger;
var FAJobViewModel = function () {
var self = this;
self.Parameters = ko.observableArray();
var AllTask = JSON.parse(readJSON(url));
function readJSON(file) {
var request = new XMLHttpRequest();
request.open('GET', file, false);
request.send(null);
if (request.status == 200)
return request.responseText;
};
self.Parameters = ko.observableArray(AllTask);
self.query = ko.observable('');
self.search = function (value) {
self.JobIDParameters = ko.observableArray();
debugger;
for (var x in AllTask) {
if (AllTask[x].JobNumber.toLowerCase().indexOf(value.toLowerCase()) >= 0) {
self.JobIDParameters.push(AllTask[x]);
}
}
self.Parameters = self.JobIDParameters;
};
}
viewModel = new FAJobViewModel();
viewModel.query.subscribe(viewModel.search);
ko.applyBindings(viewModel, document.getElementById("AllTask"));
}
);
</script>
<div id="AllTask" class=" container-fluid" style="margin-top:50px">
<span>JobId</span><input id="txtSearch" placeholder="Search…" type="search" data-bind="value: query, valueUpdate: 'keyup'" autocomplete="off">
<input type="button" id="btnSearch" value="Search" " />
<table border="1">
<thead>
<tr>
<th>Job Id</th>
<th>Requestor</th>
<th>Test Name</th>
<th>Priority</th>
<th>CreatedDate</th>
</tr>
</thead>
<tbody data-bind="foreach:Parameters" class=" container-fluid">
<tr>
<td><span data-bind="text:JobNumber"></span></td>
<td><span data-bind="text:Requestor"></span></td>
<td><span data-bind="text:TaskAbbreviation"></span></td>
<td><span data-bind="text:Priority"></span></td>
<td><span data-bind="text:CreatedDate"></span></td>
</tr>
</tbody>
</table>
</div>
@{
ViewBag.Title=“所有任务”;
}
var模型;
var url='1〕http://localhost:22653/api/AllTasks';
$(文档).ready(函数(){
调试器;
var FAJobViewModel=函数(){
var self=这个;
self.Parameters=ko.observearray();
var AllTask=JSON.parse(readJSON(url));
函数readJSON(文件){
var request=new XMLHttpRequest();
打开('GET',file,false);
请求发送(空);
如果(request.status==200)
返回request.responseText;
};
self.Parameters=ko.observearray(AllTask);
self.query=ko.observable(“”);
self.search=函数(值){
self.JobIDParameters=ko.observableArray();
调试器;
for(AllTask中的var x){
if(AllTask[x].JobNumber.toLowerCase().indexOf(value.toLowerCase())>=0){
self.JobIDParameters.push(AllTask[x]);
}
}
self.Parameters=self.JobIDParameters;
};
}
viewModel=新的FAJobViewModel();
viewModel.query.subscribe(viewModel.search);
applyBindings(viewModel,document.getElementById(“AllTask”);
}
);
若比德
在分配所需的结果筛选数据时,存在这样的问题:避免使用=
,而是使用()
约定,这将保持双向绑定完好无损
视图模型:
self.Original= ko.observableArray(AllTask);
self.Parameters = ko.observableArray(AllTask);
self.search = function (value) {
if(!value){self.Parameters(self.Original())}
var arr= [];
ko.utils.arrayForeach(self.Original(),function(item){
if (item.JobNumber().toLowerCase().indexOf(value.toLowerCase())>= 0)
{
arr.push(item);
}
});
self.Parameters(arr);
};
我为正确的功能做了一些小改动。希望对您有所帮助。在分配所需的结果筛选数据时存在问题,请避免使用=
,而是使用()
约定,这将保持双向绑定完好无损
视图模型:
self.Original= ko.observableArray(AllTask);
self.Parameters = ko.observableArray(AllTask);
self.search = function (value) {
if(!value){self.Parameters(self.Original())}
var arr= [];
ko.utils.arrayForeach(self.Original(),function(item){
if (item.JobNumber().toLowerCase().indexOf(value.toLowerCase())>= 0)
{
arr.push(item);
}
});
self.Parameters(arr);
};
我为正确的功能做了一些小改动。希望能有所帮助。试着做一个self.Parameters=self.JobIDParameters
到这个self.Parameters(self.JobIDParameters())
。非常感谢这项工作……我应该怎么做?如果你得到了修复,请将它标记为答案。这对其他人来说很有用。试着制作这个self.Parameters=self.JobIDParameters代码>到这个self.Parameters(self.JobIDParameters())
。非常感谢这项工作…我应该怎么做?如果你得到了修复,请将其标记为答案。这对其他进来的人很有用。我在第113行遇到了这个未处理的异常,0x800a138a中的第21列-JavaScript运行时错误:预期函数如果存在此异常的处理程序,程序可能会安全继续。您的jquery.js
或其他一些js可能未正确加载。检查控制台窗口并查看是否有任何错误。我在0x800a138a第113行第21列遇到了这种未经处理的异常-JavaScript运行时错误:预期函数如果有此异常的处理程序,程序可能会安全继续。您的jquery.js
或其他一些js可能未正确加载。检查控制台窗口并查看是否有任何错误。