Opciones de ng angulares en select2 - propiedades de valor de configuración

Tengo una variedad de países:

var countriesList: [
                {name: "Israel", code: "IL"},
                {name: "India", code: "IN"},
                {name: "Andorra", code: "AD"}
            ]

y una selección de países seleccionados:

    selectedCountries: [
                    {
                        country:"IL"
                    }
                ] 

Estoy usando select2 para seleccionar países. Comencé con ng-repeat para generar el<options/> etiqueta:

 <select
    id="countriesList"
    ui-select2
    multiple
    ng-model='data.selectedCountries'
    data-placeholder='Choose or Search for Countries'
    name='locations'
    ng-change='geoTargetingChanged()'>

       <option ng-repeat="country in data.countriesList" value="{{country.code}}">{{country.name}}</option>                
</select>

este método funcionó bien, pero causó que la forma fuera$dirty justo en el inicio así que empecé a usar el mecanismo `ng-options- (después de leeresta respuesta):

<select
            id="countriesList"
            ui-select2
            multiple
            ng-model='data.selectedCountries'
            data-placeholder='Choose or Search for Countries'
            name='locations'
            ng-change='geoTargetingChanged()'
            ng-options="country.code as country.name for country in data.campaignSettings.countriesList">
           <option></option>
</select>

Ahora el problema es que el valor de los elementos no es el código del país, es su índice en la matriz.

¿Me estoy perdiendo de algo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta