我是angular js的初学者,在http请求和绑定选择方面有问题。
我有一个表格中的选择菜单,填写如下:
$http.get("test").success(function (result) {
result.forEach(function (e) {
services.push(e)
});
});
我使用html中的服务变量如下(我使用select2作为选择菜单):
<select id="service" ng-model="requestCtrl.service" multiple ui-select2 data-placeholder="Services sans cache ..." class="default-select" >
<option ng-repeat="service in requestCtrl.services" value="{{service}}" >{{service}}</option>
</select>
现在一切都很好。
我将服务变量保存在localStorage中,并在页面加载中恢复它。
但是,在这一步中,我遇到了一个问题。变量从localStorage加载得很好,但它没有出现在select中,它是空的。如果我不从http服务加载select选项,所有选项都可以正常工作。所以我想我在加载选择菜单时遇到了问题。
我的代码出了什么问题?
谢谢。
在控制器中。。。
将"services"var声明为$scope
的一部分。像这样:
$scope.services = [];
在HTML中
<option ng-repeat="service in services" ....
为了简化角度变化的答案,当"vars"与scope
关联时,会影响UI。我在你的$http.get
和后来的services.push(e)
中找不到那个关联。这就是我期望看到的:
$http.get("test").success(function (result) {
result.forEach(function (e) {
$scope.services.push(e);
});
});
顺便说一句,我想知道你的结果.forEach是否可以通过使用concat
函数来改进:
$scope.services = $scope.services.concat(result);
让你的代码像这样:
$http.get("test").success(function (result) {
$scope.services = $scope.services.concat(result);
});