Open andrewfam opened 7 years ago
What do you mean store value instead of name? Could you please provide a code snippet to show how you use this
from your example, the select stores the option names.
This means that if i change the name, the value becomes lost. A normal select, as below, if you change the label Volvo to something else, at least the option is still selected
http://nya.io/nya-bootstrap-select/#!/examples/groups-and-more
Use data-value
expression you can bind your model to some property of your option
@lordfriend, I'm not sure if @andrewfam has the same issue as I have but it might be related.
So in my case if I use data-value="option.id"
I lose the entire object since the ngModel
is now only link to the id
. I need the entire selected object structure for some other inputs in my form (not just the selected id). I don't see any option or other attribute that could keep the object model itself.
@ghiscoding If you need entire object being selected as model value. I shouldn't use data-value="option.id"
. by default you select is value is the left value of nya-bs-option="option in options"
Thanks @lordfriend but the reason that I use data-value="option.id"
is because I want the select to work with the form object that I pass. If I just use nya-bs-option="option in options"
without data-value
then the select is not automatically selected. I really need both the id
link and the object itself, however with current plugin I need to choose 1 or the other but cannot have both :(
@lordfriend thanks a lot for the help but I really need a reference to the full object. How can I have the entire object, while still having the selected value by it's option.id
?
Basically, what comes from my backend server is a userId
like userId: 2
and my collection of options is an array of objects.
For example, here's the collection of options
var users = [
{ id: 1, firstname: John, lastname: Doe }
{ id: 2, firstname: Jane, lastname: Doe }
];
Then let say the backend server tells me the id
selected is 2
. How can I select the 2nd value by the option.id
? If I use the data-value="option.id"
I lose the reference to the object since ngModel
only holds the id 2
. But if I remove the data-value
then the dropdown does not select the 2nd value.
If I use this code, then the value get selected but I don't know what is the object unless I do an array search on the users collection.
selected object: {{ user }} <!-- how to get selected user object??? -->
<ol class="nya-bs-select" ng-model="userId">
<li nya-bs-option="option in users" data-value="option.id">
<a>
<span>{{option.firstname + ' ' + option.lastname}}</span>
</a>
</li>
</ol>
But if I do this code, then I have the reference to the object but the value doesn't get selected
selected object: {{ user }}
<ol class="nya-bs-select" ng-model="user">
<li nya-bs-option="option in users">
<a>
<span>{{option.firstname + ' ' + option.lastname}}</span>
</a>
</li>
</ol>
I know that I can add an ngChange="findUser(users, userId)"
, but why do an extra step when your directive already know the option
(user object)?
It would be very nice to have another attribute holding the object reference.
Please bind ngModel to userId and use data-value="option.id"
then use ng-change="handleSelect()"
.
The reason why you shoud always give a clear element to bind is ngModel is a two-way binding. you must provide a value which can be select from option in order to let directive can select that value base on your model or update your model base on your selection.
The issue your faced is really not a case of what this directive care. use ng-change is enough to solve
I realised that this stores the data as the labels in the options and not the values. Anyway to fix this?