GVKun编程网logo

AngularJS从对象中选择多个选项(angularjs实现复选框多选)

8

本文将介绍AngularJS从对象中选择多个选项的详细情况,特别是关于angularjs实现复选框多选的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关

本文将介绍AngularJS从对象中选择多个选项的详细情况,特别是关于angularjs实现复选框多选的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于AngularJS - 设置 true 或 false 或选择一个选项、angularjs ng-options从options数组中选择自定义对象、angularjs ngModel未在选择输入中选择选项、angularjs – Angular JS:当对象引用另一个对象时,angular.copy会使浏览器崩溃的知识。

本文目录一览:

AngularJS从对象中选择多个选项(angularjs实现复选框多选)

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 或选择一个选项

AngularJS - 设置 true 或 false 或选择一个选项

如果我正确理解您的问题,您可以添加一个额外的选项来选择 disabledselected 框:

带有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数组中选择自定义对象

angularjs ng-options从options数组中选择自定义对象

我试图从ng-options对象列表中获取2个不同的id,并将其映射到用户select上的select模型中.模型已正确映射,但该值未显示在选择框中.

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 }];
});

解决方法

您使用的是非常旧版本的Angular.如果您可以使用相当新版本,答案是使用ng-options的track by子句:

<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未在选择输入中选择选项

angularjs ngModel未在选择输入中选择选项

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>

解决方法

您的代码应该正常工作,除非您将值设置为不在您的选项中的currentUser.field:

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会使浏览器崩溃

angularjs – Angular JS:当对象引用另一个对象时,angular.copy会使浏览器崩溃

我有以下 JavaScript / Angular代码:
var a = {};
var b = {};
a.ref = b;
b.ref = a;
angular.copy(a);

当angular.copy触发时,浏览器会锁定.我假设这是因为复制功能正在进行深层复制,当它开始复制b的引用时,它进入b然后想要复制它的引用,从而创建一个圆形副本,这将永远不会结束.

这个假设是对的吗?如果是这样,有没有办法避免这种情况?我假设答案将涉及改变数据的外观,但我很想听到别人的想法.

你的假设是对的,问题是循环引用. JSON.stringify也会抱怨这个结构. jQuery.extend在一个非常基本的层次上检测循环引用,并且可以在这里处理你的基本示例,但是 jQuery.extend has its own issues as well.如果你已经在使用jQuery,你可以使用extend,但是否则你可能想看看你自己写的东西,或者你可以使用我通过Google找到的这个花哨的cloneObject函数:

https://gist.github.com/NV/1396086

关于AngularJS从对象中选择多个选项angularjs实现复选框多选的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AngularJS - 设置 true 或 false 或选择一个选项、angularjs ng-options从options数组中选择自定义对象、angularjs ngModel未在选择输入中选择选项、angularjs – Angular JS:当对象引用另一个对象时,angular.copy会使浏览器崩溃等相关知识的信息别忘了在本站进行查找喔。

本文标签: