我还在学习Angular,但这让我烦恼:在文本框中提供项目属性时,如何在下拉组合框中获取选定值? Plunker
如果有人能帮我解决这个问题,我会很感激。
<pre>
AssetCode:
<input type="text" class="form-control" placeholder="Kods" ng-model="assetcode" on-enter="add()">
<div ng-show="pers_select.chpers">
Person in charge:
<select class="form-control input-sm" ng-model="pers_select.takepers" data-ng-options="a.name for a in persons"></select>
</div>
</pre>
我不知道怎么把html放在这里才能看到它,但是在plunker中我希望你会看到它很好:)
$scope.$watch('pers_select', function() {
console.log($scope.pers_select.takepers);
if ($scope.pers_select.chpers === true && $scope.pers_select.takepers === null) {
for (var i in $scope.assets) {
if ($scope.assets[i].person !== null) {
$scope.pers_select.takepers = $scope.assets[i].person;
//somehow assign person value from record to combobox, as selected value
} else {
}
}
}
}, true);
});
更新: 我提供了部分代码,所以我不知道我在那里做了什么。因此,当我选择组合框(未在plunker中显示)参数记录在表中选择时,哪些资产属性需要检查。当代码阅读器读取其ID时,它将被粘贴到AssetCode文本框中并按下回车键。然后组合框出现在我可以分配或删除资产负责人的地方,但我需要做的是,当组合框(人)出现选择值时,其中一个资产负责人(如果有一个) )。
更清楚?
答案 0 :(得分:1)
如果我理解了您的要求,您可以在输入框中输入John,并在选择框中自动选择John。我希望这是正确的,我不太清楚。
首先,您的add()
函数还应包含您要添加的内容:
<input type="text" class="form-control" placeholder="Kods" ng-model="assetcode" on-enter="add(assetcode)">
现在您拥有了用户名,但在您选择的模型中,您根据$scope.persons
数组使用了一个对象。因此,我们必须过滤掉我们想要获得的正确对象,顾名思义,这就是$filter
的用途。你必须先将它注入你的控制器。
$scope.add = function(person){
$scope.pers_select.chpers = true; //In input(Other field) this is defined as true
var personObj = $filter('filter')($scope.persons, {name: person});
$scope.pers_select.takepers = personObj[0];
};
请参阅此plunker:http://plnkr.co/edit/T5kdx28OFVKNRMitxuwh?p=preview
我在watch
pers_select
的{{1}}函数中并没有完全达到你要达到的目的,但对我而言,整个过程看起来并没有必要。