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 来过滤掉已经选择的选项,尽管它们是相似的

4

1 回答 1

0

使用$templateCachefor循环作为替代:

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()
  	{
    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>

参考

于 2017-05-25T23:51:52.527 回答