Angularjs 级联数组上n选项的角度表达式
我有一个来自后端的数组,其中包含一个对象数组,这些对象是选择框的选项,比如countryselection:Angularjs 级联数组上n选项的角度表达式,angularjs,expression,ng-options,Angularjs,Expression,Ng Options,我有一个来自后端的数组,其中包含一个对象数组,这些对象是选择框的选项,比如countryselection: $scope.countries = [ { name: 'foo', code: 'ba' }, { name: 'bar', code: 'br' }, { name: 'biz', code: 'bb' } ]; 此阵列是原始的、可重用的,并且可以随时通过可能更改此阵列的不同函数进行更新 但是,我希望selectbox前面有一个不同的选项,该选项最初是选定
$scope.countries = [
{ name: 'foo', code: 'ba' },
{ name: 'bar', code: 'br' },
{ name: 'biz', code: 'bb' }
];
此阵列是原始的、可重用的,并且可以随时通过可能更改此阵列的不同函数进行更新
但是,我希望selectbox前面有一个不同的选项,该选项最初是选定的,并且是特定于实现的(因此不会将其添加到countries数组中,以避免对其他值的使用者造成污染):
那么我想让它起作用:
<select name="countryCode" model="model.country"
ng-options="option.code as option.name for option in defaultCountry + countries">
</select>
是否有现成的解决方案可以同时使用两个阵列作为ng选项?这应该可以:
<select name="countryCode" model="model.country"
ng-options="option.code as option.name for option in countries">
<option value="">-- Select a country --</option>
</select>
--选择一个国家--
您可以在ng选项之前进行concat:
<select name="countryCode" model="model.country" ng-init="allCountries=defaultCountry.concat(countries)"
ng-options="option.code as option.name for option in allCountries">
<option value="">-- Select a country --</option>
</select>
--选择一个国家--
在ng选项中使用concat
<select name="countryCode" ng-model="model.country"
ng-options="option.code as option.name for option in defaultCountry.concat(countries)">
</select>
非常好,这不会更改原始数组,并且仍然允许在选项中反映数组中的任何更改。这确实有效,但由于模板的设置方式,不希望在模板中添加html(此处未反映更大的图片)。请注意,如果省略了值
属性,该选项将被删除。我在页面中使用了完全相同的内容,该选项不会被删除!我发现这个解决方案比创建和连接数组要好。我想这是一个偏好的问题!:)我的selectbox实际上是一个通用指令,因此更新该模板以有条件地允许硬编码选项有点困难:)我的ng选项确实删除了值较少的选项元素initial
,但空值修复了它:initial
。不确定原因,angular 1.2.x.ng init
似乎只运行一次,此时将在作用域上分配allCountries属性。当国家/地区更改时,此值不会更改。
<select name="countryCode" model="model.country" ng-init="allCountries=defaultCountry.concat(countries)"
ng-options="option.code as option.name for option in allCountries">
<option value="">-- Select a country --</option>
</select>
<select name="countryCode" ng-model="model.country"
ng-options="option.code as option.name for option in defaultCountry.concat(countries)">
</select>