Search code examples
javascriptangularjsmodelng-options

How to define ng-options selected value and assign this to model?


I have a data like this which i compile to select options and inside it selected value defined as defaultValue: 1

content: [
    {
        value: "Bireysel",
        key: "1",
        defaultValue: 0
    },
    {
        value: "Kurumsal",
        key: "2",
        defaultValue: 1
    },
    {
        value: "Bireysel & Kurumsal",
        key: "3",
        defaultValue: 0
    }
]

I can convert this to select opitons and send user's selected value to server.

<select ng-model="model.customer" ng-options="item.key as item.value for item in model.properties['CUSTOMER']" name="customer" required>
</select>

But when i try to define selected value i can not send to server. I've tried track by but it selects all option fields and i can not send selected field to server.


<select ng-model="model.customer" ng-options="item.key as item.value for item in model.properties['CUSTOMER'] track by defaultValue" name="customer" required>
</select>

I've also tried ng-repeat not ng-options. This method seems dirty, it selects default value true but i can not send true data to server if user isn't changed any option. This occurs because of ng-selected is not assigns default value to my model: model.customer

<select ng-model="model.customer" name="customer" required>
    <option ng-repeat="item in model.properties['CUSTOMER']" value="{{item.key}}" ng-selected="item.defaultValue">{{item.value}}</option>
</select>

How can i manage to define default value using ng-options and assign this to my model for sending true data to server ?


Solution

  • The default value of your model can be set with ng-init, like this :

    <select ng-model="customer" ng-init="customer = content[0].key" ng-options="item.key as item.value for item in content" name="customer" required>
    

    JSFiddle here