2013-09-13 3 views
0

Я использую угловую директиву.Условное включение опций выбора в угловом

<select 
    ng-model="tune.rating" 
    ng-options="opt.value as opt.label for opt in dropdowns.rating" 
    ng-change="update()" > 
    <option ng-if="tune.rating === -1" value="">-- rate tune --</option> 
</select> 

Я хочу вариант по умолчанию, включается только тогда, когда рейтинг еще не дал, но ng-if не получает применяется (как, когда контроллер загружается и в ответ на выбор значения)

Есть ли способ, которым я могу заставить это работать. Я не могу добавить вариант по умолчанию условно к dropdowns.rating, так как есть много мелодий на странице, все из которых могут быть оценены или не оценены, и все из которых используют массив dropdowns.rating

Примечание: я не думаю, что мой вопрос дублирует этот angularjs Select with filter to filter out the option that's already selected, хотя они подобны

+2

Убедитесь, что вы используете atleast version 1.1.5 для использования 'ng-if'. – AlwaysALearner

+0

@CodeHater Хорошее место. Я обновился, и теперь он работает. – wheresrhys

+0

Вы также можете использовать ng-hide/ng-show. –

ответ

0

Используйте $templateCache и контур for в качестве альтернативы:

var app = angular.module('foo', []); 
 

 
function foo($templateCache) 
 
    { 
 
    var tmpl, lister, 
 
    ProductData = 
 
    { "odata.metadata": "localhost:51811/odata/$metadata#Products", 
 
    "value": [ 
 
       { 
 
       "ID": 1, 
 
       "Year": 2017, 
 
       "Name": "Hat", 
 
       "Price": "15.00", 
 
       "Category": "Apparel" 
 
       } 
 
      ] 
 
    }; 
 

 
    lister = function() 
 
    \t { 
 
    var index, replacement = ""; 
 
    for (index in this) 
 
     { 
 
     /* Avoid adding the callback function itself to the array */ 
 
     if (/[^\d]/.test(this[index]) === false) 
 
     { 
 
     replacement = replacement.concat("<option>",this[index],"</option>"); 
 
     } 
 
     } 
 
    return replacement; 
 
    }; 
 
    
 
    ProductData.value[0].toJSON = lister; 
 
    tmpl = JSON.stringify(ProductData.value[0]); 
 
    
 
    console.log(tmpl); 
 
    
 
    $templateCache.put('listContent', tmpl); 
 
    } 
 

 
app.run(foo);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> 
 
<div ng-app="foo"> 
 
    <select ng-include="'listContent'"></select> 
 
</div>

Список литературы

+0

Я не уверен, что этот код должен делать, но это на самом деле не похоже, что это относится к вопросу. он, кажется, только создает опции для элементов 'number', а не создает опции для элементов' string', что на самом деле не решает вопрос. Вопрос состоял в том, как показывать только опцию «по умолчанию», когда «ng-model» не имеет значения. – Claies

+0

Это всего лишь способ «Условно включать в себя опцию выбора в угловом» в соответствии с заголовком. Поскольку ваша конкретная проблема была устранена путем обновления, я не рассматривал это здесь. –

+0

не было * мой * выпуск; он просто чувствует, что этот ответ действительно отключен от вопроса, и странное дополнение к вопросу, которому 4 года. – Claies

Смежные вопросы