オブジェクトに基づいて動的フォームを作成しようとしています。例: 生成された選択ボックスにオプションが含まれるようにします。
マークアップ:
<select ng-repeat="select in selects"
ng-init="options = refactor.options(select)"
ng-options="option in options">
</select>
コントローラ:
myApp.controller('MyCtrl', function($scope, refactor) {
$scope.refactor = refactor;
$scope.selects = [
{ text: "Country", value="chosen.country", options=["France", "England"] },
{ text: "Gender", value="chosen.gender", options="/gender" }
]
});
工場:
myApp.factory('refactor', function($scope, $http) {
return {
options: function(select) {
if(typeof(select.options) === 'object') { return select.options };
// otherwise assume select.options is
// a path to fetch options by ajax:
$http.get(select.options).success(function(data) {
select.options = data; // data == ['male', 'female']
});
return []; // placeholder until promise is fulfilled
}
}
})
データ ( $scope.selects ) は期待どおりに更新されますが、DOM は更新されません。これはおそらく、変更に応じて refactor.options() が再度呼び出されていないことを意味します。スコープ オブジェクトをファクトリに渡して $apply を呼び出して更新を強制しようとしましたが、うまくいきません。
私は何が欠けていますか?