我想了解如何在承诺填充后在DropDown列表中成功设置一个值。要设置的值将取自另一个承诺,该承诺将填充具有JSON结构的表单。
在我的特定情况下,发病率如下
下拉列表构建为:
1)HTML模板(Jade)
select(name="inputUserRelationship",
ng-model="myForm.relationship",
ng-options="relationshipOption as relationshipOption.value for relationshipOption in relationships track by relationshipOption.id",
ng-init="myForm.insuredRelationship = relationships[0]")
option(value="") -- SELECT --
2)控制器:
$scope.getRelationTypes = function(){
HttpSrv.get('api/getRelationTypes/').then(function(results){
$scope.relationships = results;
}); };
表单在Controller中填写如下:
$scope.getFormInformation = function(ID){
HttpSrv.get('/api/getFormInfo/' + ID).then(function(results){
if(results)
{
$scope.fillForm(results);
}
}); };
$scope.fillForm = function(filledFormData){
$scope.myForm.relationship = filledFormData.relationnshipID; };
这会在我的JS调试控制台上产生以下问题:
TypeError:无法分配给只读属性' id' 9 在setter(vendor.js:42989) 在Lexer.readIdent.token.fn.extend.assign(vendor.js:42424) 在validationErrorKey。$ setViewValue(vendor.js:49629) 在vendor.js:53523 在Scope.promises。$ get.Scope。$ eval(vendor.js:44729) 在Scope.promises。$ get.Scope。$ apply(vendor.js:44827) 在HTMLSelectElement。 (vendor.js:53465) 在HTMLSelectElement.jQuery.event.dispatch(vendor.js:4641) 在HTMLSelectElement.jQuery.event.add.elemData.handle(vendor.js:4309)
非常感谢任何信息。我已经研究过&测试了 $ scope.apply()和 $ q 选项,即使我知道他们指向了正确的方向,也没有成功。
干杯!
答案 0 :(得分:0)
如果您的$ http API调用以格式返回json:
[{"id":"1", "value":"Dropdown desc"}, {...}, {}]
您应该设置具有相同结构的对象文字,以将下拉列表设置为特定值,如:
$scope.myForm.relationship = {"id":"1", "value":"Dropdown desc"};