2017-09-07 31 views
0

空白のオプションが表示されなくなっているようです。どのようにそれを行うための任意の推奨事項? AngularJSは私に役立つ情報を提供していないと私はStackoverflowから多くの提案を適用しようとしました。このコードには何も表示されません。

angular.module("myApp", []); 
 

 
angular.module("myApp").component("app", { 
 
    template: ` 
 
    <div> 
 
     <select 
 
     ng-model="$ctrl.foo" 
 
     ng-options="day.value as day.label for day in $ctrl.days track by day.value" 
 
     ></select> 
 
    </div> 
 
    `, 
 
    controller: function() { 
 
    this.days = _.range(0, 31).map(function(day) { 
 
     if (day === 0) return {label: "No Wait", value: day}; 
 
     return {label: "" + day, value: day}; 
 
    }); 
 
    this.foo = 2; 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script> 
 
<script src="https://code.angularjs.org/1.6.5/angular.js"></script> 
 

 
<body ng-app="myApp"> 
 
    <app></app> 
 
</body>

+0

見る、あなたがそれを取り除くことができるとは思わないがselectの空のオプション?](https://stackoverflow.com/questions/12654631/why-does-angularjs-include-an-empty-option-in-select) – user2718281

+1

'' 'this.foo = 2;' 'を変更します。 –

+0

[なぜAngularJSにselectに空のオプションが含まれているのですか?](https://stackoverflow.com/questions/12654631/why -does-angularjs-include-empty-option-in-select) –

答えて

0

this.foo = { value: 2 };

+0

'day.value as ...'が 'ng-options'で使われているので、値を直接代入するとうまくいくはずです。 – Icycool

+0

ええ、私は、 'day.value'は完全に動作するはずです、私はオブジェクト全体を元に戻すことは望ましくないことを確認できます。 –

0

が、私はこれを解決し

ng-options="day.value as day.label for day in $ctrl.days" 
+0

しかし、これは私のすべてのオブジェクトに '$$ hashKey'の存在を強制し、' day.value'に基づいてすべてのオブジェクトが一意であるため、実際には必要ありません。 –

+0

[documentation](https ://docs.angularjs.org/api/ng/directive/ngOptions#-select-as-)これについては、多分それが起こるようにする方法があるかもしれません。 – Icycool

0

この問題を解決しますtrack by一部を除去するように思えるのオブジェクトの割り当てに変更this.foo = 2;。私はng-optionsが正常に動作していないことができますが、ng-valueoptionng-repeatはトリックでした:[なぜAngularJSが含まれない

angular.module("myApp", []); 
 

 
angular.module("myApp").component("app", { 
 
    template: ` 
 
    <div> 
 
     <select 
 
     ng-model="$ctrl.foo" 
 
     > 
 
     <option 
 
      ng-repeat="day in $ctrl.days track by day.value" 
 
      ng-value="day.value" 
 
     > 
 
      {{day.label}} 
 
     </option> 
 
     </select> 
 
    </div> 
 
    `, 
 
    controller: function() { 
 
    this.days = _.range(0, 31).map(function(day) { 
 
     if (day === 0) return {label: "No Wait", value: day}; 
 
     return {label: "" + day, value: day}; 
 
    }); 
 
    this.foo = 2; 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script> 
 
<script src="https://code.angularjs.org/1.6.5/angular.js"></script> 
 

 
<body ng-app="myApp"> 
 
    <app></app> 
 
</body>

関連する問題