AngularJS 默认值选择中的 Ng-init 不起作用
Ng-init in the selection for default value with AngularJS doesn't work
在网络应用程序中,我有一个费用列表,如果您按上面的按钮,它会将您带到一个新页面以编辑 selected 费用。当用户单击列表的一个元素时,我将对象(selected Expense)保存在整个应用程序通用的全局对象中,并在编辑控制器中检索它:
$scope.companySelected = GlobalApplicationData.selectedExpenseList;
GlobalApplicationData.selectedExpenseList 是一个对象:
$$hashKey: "object:39"
_id: "33aa5549-7802-40d9-bc89-8780705b8c9b"
_rev: "3-eb940cb990524112723f711618e0cf51"
ad_table_id: 1000596
company_name: "Company 1"
data: Object
recordid: 1000005
__proto__: Object
一笔费用只有一家公司。
所以,在这个编辑页面中,我有一些字段(输入类型文本、日期等)。我还有一个 selection
,其中包含已登录用户的公司列表。为了检索该列表,我做了这个函数:
$scope.getCompanyList = function() {
EditExpenseListSrv.getCompanyListDetail(user).then(function (companyListDetail) {
$scope.companyList = companyListDetail;
$scope.$apply();
}).catch(function (err) {
console.log(err);
});
};
CompanyListDetail 是一个对象数组:
companyListDetail: Array[5]
0: Object
1: Object
2: Object
3: Object
4: Object
这是这些对象的一个例子:
_id: "44e620dc-e715-453f-882b-3f21aeef48fe"
_rev: "1-c09c9f3350e853e588f3358aaafc0374"
ad_table_id: 1000146
data: {
description: "text"
id_company: 513424
name: "Company 2"
}
recordid: 1000002
所以公司的selected Expense($scope.companySelected
)肯定会通过查询得到列表的一部分($scope.companyList
)。但我想给用户改变它的可能性。
所以我想制作一个 selection
包含列表 ($scope.companyList
) 并且默认已经 selected 对应于 $scope.companySelected
.
的公司
我写过这个,但它不起作用:
<select class="selection" ng-model="companySelected"
ng-init="companySelected = globalApplicationData.selectedExpenseList"
ng-options="company
as company.data.name for company in companyList">
但是没用。我可以在 selection 中看到所有公司,但没有 select 默认值
您可以尝试在控制器中进行初始化:
$scope.companySelected = "the value that you want to set here"
或者您可以尝试将 ng-init 放在 select 的父级中。一旦我遇到这样的问题,我就把 ng-init 放在父标签中解决了。示例:
<div id="parent" ng-init="companySelected = globalApplicationData.selectedExpenseList">
<select ...>
</div>
另一个想法是将 companySelected 放在一个对象中。如果我在 ng-value 中使用 $scope.value 而不是使用 $scope.formData.value
,我会遇到一些问题(我不确定为什么)
当您将默认值分配给 select
时,您需要分配该对象,因此当分配给其他对象的相同数据时它不会起作用:
注:
a) data
是在 select
列表中循环的数组
b) selectedcountry
是绑定在 select
列表上的模型。
选项 1:
Using ng-init
:
<select ng-model="selectedcountry" ng-init="selectedcountry = data[0]" ng-options="item.name for item in data">
<option value="">Select</option>
</select>
选项 2:
Assigning the default from the controller
$scope.selectedcountry = $scope.data[0];
在网络应用程序中,我有一个费用列表,如果您按上面的按钮,它会将您带到一个新页面以编辑 selected 费用。当用户单击列表的一个元素时,我将对象(selected Expense)保存在整个应用程序通用的全局对象中,并在编辑控制器中检索它:
$scope.companySelected = GlobalApplicationData.selectedExpenseList;
GlobalApplicationData.selectedExpenseList 是一个对象:
$$hashKey: "object:39"
_id: "33aa5549-7802-40d9-bc89-8780705b8c9b"
_rev: "3-eb940cb990524112723f711618e0cf51"
ad_table_id: 1000596
company_name: "Company 1"
data: Object
recordid: 1000005
__proto__: Object
一笔费用只有一家公司。
所以,在这个编辑页面中,我有一些字段(输入类型文本、日期等)。我还有一个 selection
,其中包含已登录用户的公司列表。为了检索该列表,我做了这个函数:
$scope.getCompanyList = function() {
EditExpenseListSrv.getCompanyListDetail(user).then(function (companyListDetail) {
$scope.companyList = companyListDetail;
$scope.$apply();
}).catch(function (err) {
console.log(err);
});
};
CompanyListDetail 是一个对象数组:
companyListDetail: Array[5]
0: Object
1: Object
2: Object
3: Object
4: Object
这是这些对象的一个例子:
_id: "44e620dc-e715-453f-882b-3f21aeef48fe"
_rev: "1-c09c9f3350e853e588f3358aaafc0374"
ad_table_id: 1000146
data: {
description: "text"
id_company: 513424
name: "Company 2"
}
recordid: 1000002
所以公司的selected Expense($scope.companySelected
)肯定会通过查询得到列表的一部分($scope.companyList
)。但我想给用户改变它的可能性。
所以我想制作一个 selection
包含列表 ($scope.companyList
) 并且默认已经 selected 对应于 $scope.companySelected
.
我写过这个,但它不起作用:
<select class="selection" ng-model="companySelected"
ng-init="companySelected = globalApplicationData.selectedExpenseList"
ng-options="company
as company.data.name for company in companyList">
但是没用。我可以在 selection 中看到所有公司,但没有 select 默认值
您可以尝试在控制器中进行初始化:
$scope.companySelected = "the value that you want to set here"
或者您可以尝试将 ng-init 放在 select 的父级中。一旦我遇到这样的问题,我就把 ng-init 放在父标签中解决了。示例:
<div id="parent" ng-init="companySelected = globalApplicationData.selectedExpenseList">
<select ...>
</div>
另一个想法是将 companySelected 放在一个对象中。如果我在 ng-value 中使用 $scope.value 而不是使用 $scope.formData.value
,我会遇到一些问题(我不确定为什么)当您将默认值分配给 select
时,您需要分配该对象,因此当分配给其他对象的相同数据时它不会起作用:
注:
a) data
是在 select
列表中循环的数组
b) selectedcountry
是绑定在 select
列表上的模型。
选项 1:
Using
ng-init
:
<select ng-model="selectedcountry" ng-init="selectedcountry = data[0]" ng-options="item.name for item in data">
<option value="">Select</option>
</select>
选项 2:
Assigning the default from the
controller
$scope.selectedcountry = $scope.data[0];