gpt4 book ai didi

Angularjs:使用不带 ng-options 的选择框绑定(bind)复杂对象

转载 作者:行者123 更新时间:2023-12-05 01:07:07 24 4
gpt4 key购买 nike

我需要通过选择框绑定(bind)复杂对象。

我知道 ng-options ,但我不能在 ng-options 中使用模板表达式。我需要向 Controller 中的每个对象添加带有显示文本的字段,例如 this fiddle .这意味着我需要更改演示文稿的逻辑/代码。 这是一个不好的关注点分离。

有没有办法用选择框绑定(bind)复杂对象不是 使用 ng 选项?我需要在模板中编写 displaytext 声明,如下所示:

<select name="myObject" ng-model="myObject.sub">
<option ng-selected="!myObject.sub.id"></option>
<option value="" translate="myObject.sub.self" ng-selected="myObject.sub.id == -1">
<option ng-repeat="option in subselect.data" value="{{option}}" ng-selected="option.id == myObject.sub.id">
{{option.id}} {{option.shortName}} {{ option.comment }}
</option>
</select>

目前这是绑定(bind)字符串 [object Object] ,因为 value 属性中的插值。

最佳答案

使用带有 ng-change 的小辅助函数您可以捕获所选项目的索引以获得完整的对象。

HTML

<label ng-controller="CompanyController" for="ci-company_sid">
Company:
<select ng-model="selectedCompanyIndex" ng-change="update(companysData.companys)">
<option ng-repeat="c in companysData.companys" value="{{$index}}" ng-selected="c.company.sid == selectedCompany.company.sid">{{c.company.company_name}} - {{c.company.link}}</option>
</select>
<hr>
{{selectedCompany.company.link}}
</label>

Controller :
function CompanyController($scope, $http) {
$scope.companysData = {
"companys": [{
"company": {
"link": "\/company\/8256606980000143017",
"sid": "8256606980000143017",
"company_name": "Company 29"
}},
{
"company": {
"link": "\/company\/8256603960000178016",
"sid": "8256603960000178016",
"company_name": "Company 1"
}}]
}
$scope.update = function(dataSet){
$scope.selectedCompany = dataSet[$scope.selectedCompanyIndex];
}
$scope.selectedCompany = $scope.companysData.companys[0];
}

http://jsfiddle.net/XzfVZ/3/

关于Angularjs:使用不带 ng-options 的选择框绑定(bind)复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19024330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com