以下は非常に単純な例です: JsFiddle
ここに MainCtrl があります
function MainCtrl($scope)
{
$scope.color = {};
$scope.colors = [
{ name: "red" },
{ name: "yellow" },
];
var newColor = $scope.color;
newColor.name = "blue";
$scope.colors.push(newColor);
$scope.selectedColor = newColor;
}
私は3つのhtmlフォームを持っています:
- MainForm.Html
- AvailableColors.html (部分的、ng-include で MainForm.html に埋め込まれています)
- AddNewColor.html
MainForm.Html は次のようになります。
<div ng-app ng-controller="MainCtrl">
<div ng-include="'AvailableColors.html'">
</div>
AvailableColors.html は次のようになります。
<select ng-model="$parent.selectedColor" ng-options="color.name for color in colors">
<option value="" selected>Select Color ..</option>
</select>
<a href="#">Add New Color</a>
<br />
value is {{ selectedColor }}
JsFiddle の例では、新しい色を追加するユーザーをシミュレートしようとしています。「$parent」を持つには、AvailableColors の ng-model が必要です。これは ng-include から来ており、「$parent」がないため、選択された選択はフォームの送信時にスコープ外になります。
私の問題は、ユーザーが追加したときに、新しく追加された色を AvailableColors.html にプッシュできないことです。
何か案は?
1 つのメモ: JsFiddle で新しい色「青」が追加されていることは知っていますが、それは実際にはその例に ng-include がないためです。
明らかに、実際に ng-include がある場合、ページを更新するまでは表示されません。