我有设定角度的选择指令所选择的项目有问题。 我不知道这是否是一个错误或角设计师有意识的设计。 这肯定让选择指令少了很多有用的,。
描述:
我的应用程序与REST API进行通信,以接收数据库中的实体。 该API决定了对象的关系与ID属性只发送,这样你可以根据需要在后续请求检索。
例:
{ id : 1, customerName : "some name", city : {id : 12}}
其中,城市是可以通过不同的REST端点使用城市标识进行检索,看起来像这样的另一个实体:
{ id: 12, name : "New York"}
我需要创建一个表单与所有可能的城市的下拉菜单编辑客户实体,使用户可以从列表中选择了恰当的城市。 从JSON对象检索列表必须首先显示客户所在的城市。
该形式如下:
<form>
<input type="text" ng-model="customer.name"/>
<select ng-model="customer.city" ng-options="i as i.name for i in cities"></select>
</form>
和控制器看起来是这样的:
app.controller('MainCtrl', function ($scope, $http) {
$http.get(serviceurl + 'admin/rest/customer/' + id + "/", {
params: {"accept": "json"},
withCredentials: true
}).then(function (response) {
$scope.customer = response.data.item;
});
$http.get(serviceurl + 'admin/rest/city/', {
params: {"accept": "json"},
withCredentials: true
}).then(function (response) {
$scope.cities = response.data.items;
// THIS LINE LOADS THE ACTUAL DATA FROM JSON
$scope.customer.city = $scope.findCity($scope.customer.city);
});
$scope.findCity = function (city) {
for (var i = 0; i < $scope.cities.length; i++) {
if ($scope.cities[i].id == city.id) {
return $scope.cities[i];
}
}
}
});
应该发生什么:一旦市物体的全部细节加载的选择指令必须设置加载在列表中选择项目的城市。
会发生什么:列表中会显示一个空项目,有没有办法来初始化所选择的项目,如果从项目的阵列外的物体所选择的项目。
这里的问题的DEMO: http://plnkr.co/edit/NavukDb34mjjnQOP4HE9?p=preview
是否有这样的解决方案? 可以选择的项目可以在通用的方式编程设置,使得AJAX调用和选择逻辑被重构到一个可重复使用的基于AJAX控件选择?