2016-04-01 7 views
1

私はコンポーネントのリストを持っていますが、これらのコンポーネントのそれぞれにはドロップダウン(またはselect)コントロールがあります。私はng-repeatを使ってこれらのコンポーネントをレンダリングします。 ChromeとFirefoxでは正常に動作しますが、IE10では動作しません。 IE10で 私は、次のしている場合:ng-repeatのInternetドロップダウンリストのAngularjsが正しく表示されない

<select ng-model="selection.selected_id"> 
    <option value="" ng-selected="!selection.selected_id" ng-hide="selection.selected_id"> 
    Select one 
    </option> 
    <option ng-repeat="option in options" 
       ng-selected="option.id === selection.selected_id" 
       value="{{option.id}}"> 
    {{option.name}} 
    </option> 
</select> 

を当初、私はドロップダウンに{{option.name}}を見ることができます。実際にドロップダウンをクリックしたときにのみ、正しい値がレンダリングされます。 DOMを調べると、HTMLの正しい値がわかります。IE自体が正しくレンダリングしないようです。
選択がng-repeat自体に含まれていない場合は問題ありません。
ここにはjsfiddleの例があります。これはChromeで動作します(正常に動作します)。次にIE10で動作します(動作しません)。私は最新の角度(1.5.1)を使用しています。
修正がありますか?ありがとう。

答えて

2

を助けることがIE 11 問題について非常に確か

を罰金ではない動作しますが、はい-ng-バインドが常に使用してより良いオプションは{{}}

NGとしてみてください選択タグの-options。それは既にIE10でテストされたように動作するはずです https://docs.angularjs.org/api/ng/directive/ngOptions

+0

私は最初に起動しましたng-optionsを指定してください。しかし、それが導入する制限(主に、あるドロップダウンで選択したオプションを別のドロップダウンで選択できないように無効にすることはできません)では使用できません。 –

+0

最後にng-optionsを使用しました。それぞれのドロップダウンボックスでエントリを無効にするための幻想的な魔法です。問題を修正しました。私はまだ私がバグに遭遇した問題を考慮します、ちょうどそれがIEか角であることを確信していません。 –

+0

IE9をサポートすることが必須なら、基本的に "単純な"解決策はありませんか? –

1

この命令を試すことができます。私は、データを

.directive('fixCrappyIeSelect', function() { 
     return { 
      restrict: 'A', 
      scope: { 
       options: '=fixCrappyIeSelect' 
      }, 
      controller: ['$scope', '$element', function ($scope, $element) { 
       $scope.$watch('options', function() { 
        $element.hide(); 
        $element.show(); 
       }); 
      }] 
     }; 
    }); 

IE9、IE10にNG-オプションの問題を修正するためにこれを使用希望、これはあなたに

+0

'.hide()'と '.show()'はある時点でAngularから削除されており、1.5.1で利用できません –

関連する問題