也许有人可以帮我解决一个小问题。我是网络编程领域的新手,但我有编程经验。我想开发一个使用 angularjs 和 ui-grid 的小型网站。不幸的是,过滤不适用于外部输入字段。
有人可以告诉我我的编程错误在哪里吗?
代码可以在这里找到:http ://plnkr.co/edit/fiA666OzpBqpTrCiuXER?p=preview
var myDummyData = [{name: "Moroni", age: 50},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34}];
var myDummyData2 = [{name: "aTest", age: 50},
{name: "bTest1", age: 43},
{name: "cTest2", age: 27},
{name: "dTest3", age: 29},
{name: "eTest4", age: 34}];
$scope.filterOptions = {
filterText: ''
};
$scope.gridOpts = {
data: myDummyData,
enableFiltering: true,
columnDefs: [
{name: 'Name', field: 'name', enableFiltering: true
, filter: {
term: $scope.filterOptions.filterText //DOES NOT WORK... BUT WHY
}
},
{name: 'Price', field: 'age'}
]
};
$scope.updateData = function(newValue){
//console.log($scope.gridOpts.data);
console.log($scope.gridOpts.columnDefs[0].filter);
$scope.gridOpts.columnDefs[0].filter = {term: newValue};
console.log("Scope nameid set " + $scope.gridOpts.columnDefs[0].filter.term); //is set but no update
//$scope.$apply(); //not possible gives error! WHY??
//$scope.gridOpts.data = myDummyData; //for testing works
};
$scope.swapData = function () {
if ($scope.gridOpts.data === myDummyData) {
$scope.gridOpts.data = myDummyData2;
}
else {
$scope.gridOpts.data = myDummyData;
}
};
//DOES NOT WORK BUT WHY
// $scope.$watch('filterOptions.filterText', function (newValue, oldValue) {
// if ($scope.filterOptions.filterText) {
// $scope.filteringText = newValue;
// $scope.updateData(newValue);
// }
// });
这个想法是有一个包含搜索字段的导航栏。稍后我想根据更多列上的范围滑块进行过滤。但是,在我的示例中,甚至标准的字符串过滤都不起作用。
问题:
- 有人能告诉我我目前的问题在哪里吗?更具体地说:为什么来自外部输入字段的过滤不起作用?
- 另一个问题是如何将范围滑块的最小值和最大值绑定到例如我的示例中的年龄列?(与问题(1)中的绑定问题直接相关)
我四处寻找答案,但要么这直接是我无法掌握的绑定问题,仅仅是编程 js 问题,要么是 ngGrid 更新到 ui-grid 问题。
非常感谢提前