AngularJs:选择绑定和http请求

时间:2014-04-24 13:13:22

标签: angularjs http angularjs-select2

我是角度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服务加载选择选项,那么一切正常。 所以我认为选择菜单加载有问题。

我的代码有什么问题?

感谢。

1 个答案:

答案 0 :(得分:0)

控制器 ...

将“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);
        });
});

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

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

离开你的代码:

$http.get("test").success(function (result) {
   $scope.services = $scope.services.concat(result);
});