这是我的第一个stackoverflow问题,因此一些帮助将受到高度赞赏。我正在开发一个角度应用程序,在一个ui部分,用户有机会进行多个不同的选择,可以重复。 e.g
列表中的设备列表。用户可以创建多个,甚至可以是所有相同的类型。
工作小提琴: http://jsfiddle.net/mrafaqi/dpLd85ep/5/
<table id="devices-table" class="table">
<tr ng-repeat="item in requiredDevices track by $index" height="30">
<td>
<select
id="deviceList_{{$index}}"
name="deviceList_name_{{$index}}"
ng-model="item"
ng-options="d.name for d in devices track by d.id"
ng-change="deviceChanged($index, item)"
>{{item}}
</select>
<div id="device-options" ng-show="item.id > -1">
<label for="all_{{$index}}">1. Choose all</label><input id="all_{{$index}}" type="radio" name="type_{{$index}}" value="1" ng-model="item.amountType" checked><br>
<label for="some_{{$index}}">2. Choose some</label><input id="some_{{$index}}" type="radio" name="type_{{$index}}" value="2" ng-model="item.amountType" ><br>
<label for="amount_{{$index}}">3. Choose amount</label><input id="amount_{{$index}}" type="radio" name="type_{{$index}}" value="3" ng-model="item.amountType" ><br>
</div>
<br>
</td>
</tr>
<tr id="add-device">
<td>
<br>
<button id="add-device-button" ng-click="addDevice();">Add more</button>
<button id="add-device-button" ng-click="showRequiredDevices();">Show required devices</button>
</td>
</tr>
</table>
此代码的相应javascript是
var new_test_controller = app.controller('new_test_controller', function($scope) {
$scope.init = function() {
$scope.current_customer = $scope.customers[0].first_name;
$scope.addDevice();
};
$scope.test1_text = "";
$scope.customers =
[
{ "uid": 1, "first_name": "Rizwan", "last_name": "Zia" },
{ "uid": 2, "first_name": "Laura", "last_name": "Zia" },
{ "uid": 3, "first_name": "Sara", "last_name": "Zia" },
];
$scope.devices = [
{"id" : 1, "name": "scissors", "amount": 3, "amountType": -1},
{"id" : 2, "name": "jumppapallo", "amount": 3, "amountType": -1},
{"id" : 3, "name": "gymstick", "amount": 3, "amountType": -1},
];
$scope.requiredDevices = [
];
$scope.addDevice = function() {
var device = new Object();
device.tid = $scope.requiredDevices.length;
device.id = -1;
device.name = "";
device.amount = 0;
device.amountType = -1;
console.log(device);
$scope.requiredDevices.push(device);
};
$scope.showRequiredDevices = function() {
console.log($scope.requiredDevices);
};
$scope.deviceChanged = function($index, item) {
console.log('Device changed at index: ' + $index);
console.log(item);
//$scope.requiredDevices[$index] = item;
};
//console.log('Controller must have been initialized');
$scope.init();
});
现在,问题在于我无法选择具有不同属性的相同设备。要生成此行为
答案 0 :(得分:1)
两个item
变量
item
ng-repeat
。
{li> item
模型在select
框中
醇>
您可以更改选择框模型
前:
<select
id="deviceList_{{$index}}"
name="deviceList_name_{{$index}}"
ng-model="item1"
....
</select>
并将ng-show
更改为
<div id="device-options" ng-show="item1.id > -1">