0

我是 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 很好地加载,但它没有出现在选择中,它是空的。如果我不从 http 服务加载选择选项,一切正常。所以我认为我的选择菜单加载有问题。

我的代码有什么问题?

谢谢。

4

1 回答 1

0

在您的控制器中...

将“服务”变量声明为$scope. 像这样:

$scope.services = [];

在您的HTML中

<option ng-repeat="service in services" ....

为了简化角度变化的答案,当“vars”与scope. $http.get我在你和之后找不到那个关联services.push(e)。这是我希望看到的:

$http.get("test").success(function (result) {
        result.forEach(function (e) {
            $scope.services.push(e);
        });
});

在旁注中,我想知道您的 result.forEach 是否可以通过使用concat函数来改进:

$scope.services = $scope.services.concat(result);

像这样留下您的代码:

$http.get("test").success(function (result) {
   $scope.services = $scope.services.concat(result);
});
于 2014-04-24T14:11:18.830 回答