/ / $ rozsah. $ platí, takže rozbaľovacie konanie bude čudné - angularjs

$ rozsah. $ platí, takže rozbaľovacie konanie bude čudné - angularjs

Mám rozbaľovaciu ponuku;

<select class="form-control" data-ng-model="selected_category" data-ng-change="search(true, true)">
<option value="0">Select Category</option>
<option value="{{category.id}}" data-ng-repeat="category in categories">{{category.name}}</option>
</select>

Čo funguje perfektne. Avšak manipulujem s rozsahom mimo Angular (platný dôvod) a používam ho (je to v kóde, ale ľahko pochopiteľné).

scope.$apply (s) ->
s.units = _me.attr("data-units")
s.selected_category = parseInt(_me.attr("data-category"))

s.search(true,true)

to objavia pracovať na tom všetko podľa toho $scope.selected_category variabilné zmeny (Správne produkty / text sa objavia), ale rozbaľovacia ponuka zmizne, ak vyberiem Select Category (IE: Od tej zmeny sa to nezmenilo) a zostane rovnaké, ak je vybraté niečo iné. Pri pohľade na prázdne rozbaľovacie menu, keď používam inšpektor prvkov v prehliadači Chrome, vidím toto:

<option value="? number:31 ?"></option>

Čo s tým?

odpovede:

0 pre odpoveď č. 1

Zdá sa, že vám chýba ng-selected atribút na option aby informoval Angular o tom, ktorá možnosť je aktuálne vybraná:

<select class="form-control" data-ng-model="selected_category" data-ng-change="search(true, true)">
<option value="0">Select Category</option>
<option value="{{category.id}}" data-ng-selected="selected_category.id == category.id" data-ng-repeat="category in categories">{{category.name}}</option>
</select>

Uprednostňuje sa však použitie ng-options Ak nemusíte robiť žiadne kroky, aby ste postupovali ďalej, odporúčam vám (ako je uvedené v komentároch @TheSharpieOne), že zmeníte toto:

 <select ng-model="selected_category" ng-options="c.name for c in categories">
<option value="">Select Category</option>
</select>

Ak potrebujete sledovať do id potom použite a track by doložka:

 <select ng-model="selected_category" ng-options="c.name for c in categories track by c.id">
<option value="">Select Category</option>
</select>