2016-08-09 10 views
0

私はNG-オプションで選択を変更する必要があり、それはコントローラのいずれかからのデータを使用しています。Angular.js - リフレッシュビューのNG-オプションは後のデータ

'option1' : array[ 1: "Test", 2: "Test2" ], 
'option2' : array[ 12: "abc", 26: "zyc" ], 
'option3' : array[ 14: "fdfd", 27: "fdf" ], 
'option4' : array[ 15: "dff", 28: "dffd" ], 

とビュー:データは次のようにキーと値のペアで始まりアプリ上でAJAXによって取り出され、二次元配列である

<select name="selectedLink" id="selectedLink" ng-model="selectedLink" ng-options="key as value for (key , value) in links[selectedType]" ng-change="changeLinkName()" placeholder="Please Select" class="annotation-element"> 

すべては、アプリ起動で正常に動作しますが、問題があるの後に私を変更しますリンク配列。新しい要素を追加すると、次のようになります。

// Watch new element variables 
$scope.addNewElement = function() { 
    var newElement = $('#inputElementId').val(); 
    // (...) 
    $scope.links[newElement[0]][newElement[1]] = newElement[2]; 
    $scope.selectedLink = newElement[1]; 
    // (...) 
}; 

問題は表示が更新されないことです。選択肢には古いリンク配列データしかありません。 $ scope。$ applyを使ってみましたが、うまくいきません。

など私はjqueryのを使用して、すべてのオプションを「再描画」することができ、その後私は、NG-モデルを使用することはできません、NG-変更私は、変更配列データの後にリフレッシュUIを起動するために何をすべき?

+0

可能な場合はフィドルを投稿してください。私はあなたが 'var newElement = $( '#inputElementId')。val();'を使用していることも見ています。なぜ 'directive'または' 'binding'アプローチを使用していないのか、 Angularの主な利点です。 –

+0

データ "送信"のために私は隠しフィールドを使用します。私のアプリはiframeで実行され、他のiframeのやりとり後にparent関数によってフィールドが設定されます。保存されたデータがメインウィンドウから角度アプリのiframeに移動した後、fancyboxによるフォームの読み込みページ。 –

答えて

0

ここに実例があります。 '[ng-click]'からあなたの "add"関数を呼び出すと、それは更新されるはずです。

angular.module('app', []) 
 
    .controller('someCtrl', function ($scope) { 
 
    $scope.opts = [ 
 
     {id: '1', name: 'Option 1'}, 
 
     {id: '2', name: 'Option 2'}, 
 
     {id: '3', name: 'Option 3'} 
 
    ]; 
 
    $scope.model = $scope.opts[0]; 
 
    
 
    $scope.add = function() { 
 
     var idx = $scope.opts.length + 1; 
 
     $scope.opts.push({ id: idx, name: 'Option ' + idx }); 
 
    }; 
 
    }); 
 

 
angular.element(document).ready(function() { 
 
    angular.bootstrap(document.querySelector('#app'), ['app']); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script> 
 

 
<div id="app" ng-controller="someCtrl"> 
 
    <button type="button" ng-click="add()">Add</button> 
 
    <hr> 
 
    <select ng-model="model" ng-options="o.name for o in opts"></select> 
 
</div>

+0

いくつかのオプションをテストし、ng-clickで新しいnad単純な配列+ボタンを選択すると、うまくいきます - 両方の場合(ユーザーのやり取りとトリガー()によるクリック)。残念ながら、メインアレイでは動作しません。 2次元配列から変数にデータを移動し(各更新後)、まだ何もありません。 –

+0

コード例を作成できますか?あなたの正確な(ng-)オプションは? –

関連する問題