ng-repeat中的ng-options - 无法访问$scope中的选定项目
ng-options inside ng-repeat - can't access selected item in $scope
我想执行以下操作:
我有一个所有可能的"全部"项目的数组。我想在"子集"中创建该数组的子集:
JS.js:
var app = angular.module('myApp', []);
app.controller('myController', function($scope) {
$scope.all = [];
$scope.subset = [{name: 'n1', inUse: false}, {name: 'n2', inUse: false}, {name: 'n3', inUse: false} ];
// adding new item in all
$scope.addItem = function() {
var newc = {name: '?', inUse: false};
$scope.all.push(newc);
};
$scope.updateC = function(index) {
// index refers to all array
$scope.all[index].inUse = false;
$scope.all[index] = $scope.selectedItem;
$scope.all[index].inUse = true;
};
});
HTML.html:
<!doctype html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="utf-8">
<script type="text/javascript" src="angular-1.4.8.js"></script>
<script type="text/javascript" src="js.js"></script>
</head>
<body ng-controller="myController">
<button ng-click="addItem()">Add Item: </button>
<div ng-repeat="c in all">
{{c.name}}
<select ng-options="c as c.name for c in subset | filter: {inUse: false}"
ng-change="updateC($index)"
ng-model="selectedItem"></select>
</div>
</body>
</html>
但是我收到"类型错误:无法设置未定义的属性'inUse'。我在子作用域中看到 inUse 属性。这种行为是意料之中的吗?如何访问我的范围内的选定项?
我可以执行以下操作,但我认为这是不正确的:
var child = $scope.$$childHead;
for (var i = 0; i < index ; i++) {
child = child.$$nextSibling;
}
$scope.all[index] = child.selectedItem;
做我想做的事的正确方法是什么?
查理,你给了我改变向子集添加项目的方式的想法:
.JS
var app = angular.module('myApp', []);
app.controller('myController', function($scope) {
$scope.subset = [];
$scope.all = [{name: 'n1', inUse: false}, {name: 'n2', inUse: false}, {name: 'n3', inUse: false} ];
// adding new item in all
$scope.addItem = function() {
if ($scope.selectedItem != null) {
$scope.selectedItem.inUse = true;
$scope.subset.push($scope.selectedItem);
}
};
});
这与我想做的不一样,但它有效。
.HTML
<!doctype html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="utf-8">
<script type="text/javascript" src="angular-1.4.8.js"></script>
<script type="text/javascript" src="js.js"></script>
</head>
<body ng-controller="myController">
<select ng-options="c2 as c2.name for c2 in all | filter: {inUse: false}"
ng-model="selectedItem"></select>
<button ng-click="addItem()">Add Item: </button>
<div ng-repeat="c in subset">
{{c.name}}
</div>
</body>
</html>
相关文章:
- 正在将数据主题添加到所有项目
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何检查管道中未定义的项目
- AngularJS:ng之后,重复$scope值未按预期更新
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 学生搜索项目jquery/javascript
- 如何获取不属于我项目的上一页的URL
- $ionicplatform内的$scope不;不起作用
- Dojo:访问dijit.form.Select中单击的项目
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- 我需要为我的朋友在这个项目上提供帮助
- 如何从 HTML 查询中删除项目
- 在Meteor项目中安装并包含npm模块后出错
- $scope.item don't在第页中向ng重复返回项目
- AngularJs $scope在离子项目中是未定义的
- AngularJS Ng-Repeat不迭代$Scope中的项目
- ng-repeat中的ng-options - 无法访问$scope中的选定项目
- 在 Angular 项目中迭代 JSON 响应以创建新的 $scope obj 我可以在应用程序中使用的
- AngularJS对于$scope中的项目$scope未定义的
- AngularJS将项目推送到数组的第一个或0索引$scope