本文将介绍AngularJS从对象中选择多个选项的详细情况,特别是关于angularjs实现复选框多选的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关
本文将介绍AngularJS从对象中选择多个选项的详细情况,特别是关于angularjs实现复选框多选的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于AngularJS - 设置 true 或 false 或选择一个选项、angularjs ng-options从options数组中选择自定义对象、angularjs ngModel未在选择输入中选择选项、angularjs – Angular JS:当对象引用另一个对象时,angular.copy会使浏览器崩溃的知识。
本文目录一览:- AngularJS从对象中选择多个选项(angularjs实现复选框多选)
- AngularJS - 设置 true 或 false 或选择一个选项
- angularjs ng-options从options数组中选择自定义对象
- angularjs ngModel未在选择输入中选择选项
- angularjs – Angular JS:当对象引用另一个对象时,angular.copy会使浏览器崩溃
AngularJS从对象中选择多个选项(angularjs实现复选框多选)
尝试在angularjs中选择关于对象值的多个选项
这是一个代码:
myapp.controller(''myctrl'', [ ''$scope'', function ($scope) { $scope.query = { Statuses: { Draft: true, Live: true, Pending: true, Archived: false, Deleted: false } }; } ]);
和html
<div ng-controller="myctrl"><select multiple> <option value="Draft" ng:model="query.Statuses[''Draft'']">Draft</option> <option value="Pending" ng:model="query.Statuses.Pending">Pending</option> <option value="Live" ng:model="query.Statuses.Live">Live</option> <option value="Archived" ng:model="query.Statuses.Archived">Archived</option> <option value="Deleted" ng:model="query.Statuses.Deleted">Deleted</option></select> {{query | json}}</div>
jsfiddle上的(非)工作示例
http://jsfiddle.net/andrejkaurin/h9fgK/
答案1
小编典典您尝试使用选择倍数(如复选框列表),这有点奇怪。多选输出一个数组。您不能将ng-
model放在这样的选项标签上,而是放在选择本身上。因此,由于select将输出值数组,因此您需要遍历这些值并更新作用域中的节点。
这是一个演示代码的代码
这是代码:
JS
function inArray(x, arr) { for(var i = 0; i < arr.length; i++) { if(x === arr[i]) return true; } return false;}app.controller(''MainCtrl'', function($scope) { $scope.query = { Statuses: { Draft: true, Live: true, Pending: true, Archived: false, Deleted: false } }; $scope.selectionsChanged = function(){ for(var key in $scope.query.Statuses) { $scope.query.Statuses[key] = inArray(key, $scope.selectedValues); } };});
的HTML
<select multiple ng-model="selectedValues" ng-change="selectionsChanged()"> <option value="Draft" ng-selected="query.Statuses.Draft">Draft</option> <option value="Pending" ng-selected="query.Statuses.Pending">Pending</option> <option value="Live" ng-selected="query.Statuses.Live">Live</option> <option value="Archived" ng-selected="query.Statuses.Archived">Archived</option> <option value="Deleted" ng-selected="query.Statuses.Deleted">Deleted</option></select><br/> {{query | json}}
希望对您有所帮助。
AngularJS - 设置 true 或 false 或选择一个选项
如果我正确理解您的问题,您可以添加一个额外的选项来选择 disabled
和 selected
框:
带有ng-repeat
:
<select automationid="APR" name="cost"ng-model="$ctrl.selectedItem">
<option value="" disabled selected>Select one</option>
<option ng-repeat="x in $ctrl.items">{{x.label}}</option>
</select>
还有ng-options
:
<select automationid="APR" name="cost"ng-model="$ctrl.selectedItem"
ng-options="x.label for x in $ctrl.items">
<option value="" disabled selected>Select one</option>
</select>
在你的控制器中:
this.items = [{value: true,label: 'TRUE'},{value: false,label: 'FALSE'}];
this.selectedItem;
DEMO
angularjs ng-options从options数组中选择自定义对象
http://plnkr.co/edit/Z3ohLie4vpTvXhUiLfl6?p=preview
<!DOCTYPE html> <html ng-app="angularjs-starter"> <head lang="en"> <Meta charset="utf-8"> <title>Custom Plunker</title> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script> <link rel="stylesheet" href="style.css"> <script src="app.js"></script> </head> <body ng-controller="MainCtrl"> <h1>Select something</h1> <select ng-model="selectedItem" ng-options="{'id':item.id,'anotherid':item.anotherId} as item.name for item in items"></select> <h3>The selected item:</h3> <pre>{{selectedItem | json}}</pre> </body> </html>
Javascript:
var app = angular.module('angularjs-starter',[]); app.controller('MainCtrl',function($scope) { $scope.items = [ { id: 1,name: 'foo',anotherId: 11 },{ id: 2,name: 'bar',anotherId: 22 },{ id: 3,name: 'blah',anotherId: 33 }]; });
解决方法
<select ng-model="selectedItem" ng-options="{'id':item.id,'anotherid':item.anotherId} as item.name for item in items track by item.id"></select>
叉插:http://plnkr.co/edit/0SwHfYVuYd5iIA9P4mpU?p=preview
angularjs ngModel未在选择输入中选择选项
未选择选择控件以反映初始模型值.
当我更改select,input和currentUser.field的值也会改变,但如果我将输入文本的值更改为另一个键,则没有任何选择.
{{currentUser.field}} // show correct field field key (number) val // ng-model works => show correct field key (number) val <input ng-model="currentUser.field" type="text" /> // <option value="?" selected="selected" label=""></option> is selected <select ng-model="currentUser.field" ng-options='item.key as item.value for item in currentUser.collections.field '> </select> // only works with input text and {{currentUser.field}} <button ng-click='currentUser.field = 305'>select field (int)</button> <button ng-click='currentUser.field = "305"'>select field (string)</button>
解决方法
var app = angular.module('app',[]); app.controller('myController',function($scope) { $scope.currentUser = { collections: { field: [{ key: '1',value: 'one' },{ key: '2',value: 'two' },{ key: '3',value: 'three' }] } }; $scope.currentUser.field = "2"; });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> <div ng-app='app' ng-controller='myController'> <h3>expression</h3> {{currentUser.field}} <h3>input</h3> <input ng-model='currentUser.field' type='text'> <h3>select</h3> <select ng-model='currentUser.field' ng-options='item.key as item.value for item in currentUser.collections.field'></select> <h3>buttons</h3> <button ng-click='currentUser.field="305"'>305</button> <button ng-click='currentUser.field="1"'>1</button> </div>
angularjs – Angular JS:当对象引用另一个对象时,angular.copy会使浏览器崩溃
var a = {}; var b = {}; a.ref = b; b.ref = a; angular.copy(a);
当angular.copy触发时,浏览器会锁定.我假设这是因为复制功能正在进行深层复制,当它开始复制b的引用时,它进入b然后想要复制它的引用,从而创建一个圆形副本,这将永远不会结束.
这个假设是对的吗?如果是这样,有没有办法避免这种情况?我假设答案将涉及改变数据的外观,但我很想听到别人的想法.
https://gist.github.com/NV/1396086
关于AngularJS从对象中选择多个选项和angularjs实现复选框多选的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AngularJS - 设置 true 或 false 或选择一个选项、angularjs ng-options从options数组中选择自定义对象、angularjs ngModel未在选择输入中选择选项、angularjs – Angular JS:当对象引用另一个对象时,angular.copy会使浏览器崩溃等相关知识的信息别忘了在本站进行查找喔。
本文标签: