Javascript 如何仅检索Angularjs中的可见字段值?隐藏/删除的字段保留在范围中
如果我隐藏(ngHide/ngShow)或删除(ngIf,filter)数据绑定表单字段,则该值将保留在模型中 如果稍后显示/添加该字段,这将非常有用,因为它保留值,但是我只需要提交显示/当前字段 示例: html 示例:选择选项,然后过滤掉一些选项Javascript 如何仅检索Angularjs中的可见字段值?隐藏/删除的字段保留在范围中,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,如果我隐藏(ngHide/ngShow)或删除(ngIf,filter)数据绑定表单字段,则该值将保留在模型中 如果稍后显示/添加该字段,这将非常有用,因为它保留值,但是我只需要提交显示/当前字段 示例: html 示例:选择选项,然后过滤掉一些选项 那可能会有帮助。您可以在这里查看: 尝试实现一个自定义过滤器,并向其中添加选择/取消选择更新逻辑 并按如下方式应用过滤器: {{state.name} {{selectedStates}json} 示例: 希望这有帮助。在问题中包含您的代码。我
那可能会有帮助。您可以在这里查看:
尝试实现一个自定义过滤器,并向其中添加选择/取消选择更新逻辑 并按如下方式应用过滤器:
{{state.name}
{{selectedStates}json}
示例:
希望这有帮助。在问题中包含您的代码。我已链接到一个示例?不够好。链接消失了,这个问题对网站的未来访问者一定有用。请参阅。为什么在提交之前不能根据所选的
进行筛选?或者,如果不通过Ajax发送,则禁用添加代码到QuestionThank谢谢,我想到了这一点,但如果表单控件再次显示,让这些值保持不变是很有用的。很好的解决方案。我不知道我可以用这样的过滤器。干杯
<input type="text" name="filter" ng-model="filterText" />
<div ng-repeat="state in states | filter: filterText">
<label>
<input type="checkbox" ng-model="selectedStates[state.abbreviation]" ng-value="{{state.abbreviation}}">{{state.name}}
</label>
</div>
<pre>{{ selectedStates | json }}</pre>
$scope.selectedStates = {};
$scope.states = [{
"name": "Alabama",
"abbreviation": "AL"
}, {
"name": "Alaska",
"abbreviation": "AK"
}, {
"name": "American Samoa",
"abbreviation": "AS"
}];
<div ng-app ng-controller="StateCtrl">
<input type="text" name="filter" ng-model="filterText" />
<div ng-repeat="state in states | filter: filterText">
<label>
<input type="checkbox" ng-model="selectedStates[state.abbreviation]"
ng-value="{{state.abbreviation}}">{{state.name}}
</label>
</div>
<input type="button" ng-click="getSelectedStates()" value="Get Selected States" />
<pre>{{ selectedStates }}</pre>
</div>
function StateCtrl($scope,$filter) {
$scope.selectedStates = {};
$scope.states = [{
"name": "Alabama",
"abbreviation": "AL"
}, {
"name": "Alaska",
"abbreviation": "AK"
}, {
"name": "American Samoa",
"abbreviation": "AS"
}];
$scope.getSelectedStates = function(){
$scope.selectedStates = $filter('filter')($scope.states,$scope.filterText);
};
}
$scope.customFilter = function(text){
return function(state){
//if filter text is empty (equal to no filter)
if(!text) return true;
var isValid = false;
angular.forEach(state, function(value, key){
if(value.toLowerCase().indexOf(text.toLowerCase())!==-1){
isValid = true;
}
});
//set the selected attribute to false if state is filtered
if(!isValid&&$scope.selectedStates[state.abbreviation]){
$scope.selectedStates[state.abbreviation]=false;
}
return isValid;
};
}
<body ng-controller="MainCtrl">
<input type="text" name="filter" ng-model="filterText" />
<div ng-repeat="state in states | filter: customFilter(filterText)">
<label>
<input type="checkbox" ng-model="selectedStates[state.abbreviation]" ng-value="{{state.abbreviation}}">{{state.name}}
</label>
</div>
<pre>{{ selectedStates | json }}</pre>
</body>