AngularJSを学習中の者です。
セレクトボックスからオブジェクトを選択し、オブジェクトの内容を編集できるようなものを作ろうとしています。以下のようにコードを書きましたが、どうしてもうまくいかないので質問いたします。
selectを選択すると、inputにobjのnameが表示されるのですが、inputを編集してもselect要素の表示が変更されません。$scope.objectsと$scope.selectedObjectsを表示してみると、$scope.selectedObjectsのオブジェクトを変更したときに、$scope.objectsのオブジェクトが更新されていないので、これが原因かと思うのですが、どう解決したらいいのか分かりません。オブジェクトの参照が壊れているのでしょうか?
なぜか、$scope.addObject()した直後のオブジェクトは、ちゃんとinputからselect要素に変更が伝わります。しかし、あらためてクリックして選択しなおすと、結局変更が伝わらない状態になってしまいます。ここもよく分からないところです。
html
1<h3>オブジェクト一覧</h3> 2<select 3 ng-model="selectedObjects.values" 4 ng-options="obj as obj.name for obj in objects track by obj.id" 5 multiple> 6</select> 7<button 8 type="button" 9 ng-click="addObject()"> 10 オブジェクトを追加 11</button> 12 13<h3>選択中のオブジェクト</h3> 14<label>名前</label> 15<input ng-model="selectedObjects.values[0].name">
js
1$scope.objects = []; 2$scope.selectedObjects = []; 3$scope.addObject = function() { 4 var newObject = { 5 id: Date.now().toString(), 6 name: 'NewObject', 7 }; 8 $scope.objects.push(newObject); 9 $scope.selectedObjects.values.length = 0; 10 $scope.selectedObjects.values.push(newObject); 11};
よろしくお願いいたします。
環境
- AngularJS v1.5.8
- Google Chrome
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/23 09:36