Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带ng更改的angularjs ng选项_Javascript_Angularjs - Fatal编程技术网

Javascript 带ng更改的angularjs ng选项

Javascript 带ng更改的angularjs ng选项,javascript,angularjs,Javascript,Angularjs,我有一个类似这样的模型: { id: 1, country: { code: 'GB', name: '' } } ng-options="item.code as item.name for item in controller.countries" ng-change="controller.setCodeAndName(controller.model.country, item)" setCodeAndName: funct

我有一个类似这样的模型:

{
    id: 1,
    country: {
        code: 'GB',
        name: ''
    }
}
ng-options="item.code as item.name for item in controller.countries"
 ng-change="controller.setCodeAndName(controller.model.country, item)"
setCodeAndName: function (model, item) {
    console.log(item);
    model.code = item.value;
    model.fullName = item.description;
},
国家代码存储在数据库中,但名称不存在。但是,还有一个应用程序需要国家名称而不是代码。。。。 因此,编辑此模型时,我有一个下拉列表,其中列出了既有代码又有名称的国家。 我将ng选项设置为:

{
    id: 1,
    country: {
        code: 'GB',
        name: ''
    }
}
ng-options="item.code as item.name for item in controller.countries"
 ng-change="controller.setCodeAndName(controller.model.country, item)"
setCodeAndName: function (model, item) {
    console.log(item);
    model.code = item.value;
    model.fullName = item.description;
},
我这样做是为了用我当前的代码预先填充这个国家。 问题是,当有人选择不同的国家时,我想设置名称。 我试着这样做:

{
    id: 1,
    country: {
        code: 'GB',
        name: ''
    }
}
ng-options="item.code as item.name for item in controller.countries"
 ng-change="controller.setCodeAndName(controller.model.country, item)"
setCodeAndName: function (model, item) {
    console.log(item);
    model.code = item.value;
    model.fullName = item.description;
},
方法如下所示:

{
    id: 1,
    country: {
        code: 'GB',
        name: ''
    }
}
ng-options="item.code as item.name for item in controller.countries"
 ng-change="controller.setCodeAndName(controller.model.country, item)"
setCodeAndName: function (model, item) {
    console.log(item);
    model.code = item.value;
    model.fullName = item.description;
},
但是,这不起作用,因为未定义。我知道这是因为(应该是当前选定的项)尚未传递给该方法。
有人知道解决我的问题的方法吗?这样,一个国家就可以单独基于代码进行预填充,当它发生更改时,它会将名称添加到对象中?

您还需要在该选择上使用
ngModel
,我还建议只使用整个对象作为模型分配-因此您的
select
最终看起来像:

<select
    ng-model="selectedItem"
    ng-options="item as item.name for item in controller.countries"
    ng-change="controller.setCodeAndName(selectedItem)"
</select>