Angular ui-select触发ui-select-choices中的$ http请求

时间:2016-02-25 01:41:52

标签: javascript jquery angularjs ui-select ui-select2

我正在尝试在我的项目中使用ui-select,但这次控制器的功能将作为选项传递给ui-select-choices。见下文:

HTML:

<ui-select ng-model="selectedItem" theme="selectize" ng-disabled="disabled" style="width: 300px;" title="Please select">
<ui-select-match placeholder="Select">{{$select.selected}}</ui-select-match>
<ui-select-choices repeat="item in ctr.listItem()">
  <span ng-bind-html="item">{{item}}</span>
</ui-select-choices>

控制器:

vm.listItem = function() {
console.log("lisItem() called");

$http({
    method : "GET",
    url : "/pma/api/listyear"
}).then(function successCallback(response) {
    return response.data;
});

我从chrome的调试器注意到的是浏览器发送多个$ http请求,即使我在页面中只有一个ui-select元素

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您在角度HTML模板中使用某个函数,则希望每隔digest调用一次该函数。在这种情况下,您应该将结果分配给变量并改为使用该变量。

答案 1 :(得分:0)

<强>更新

我注意到ui-select提供refresh标记,通过调用函数重新加载内容,以便它可以支持动态选择。回到我之前的示例,以下是实现我需要的新代码:

<ui-select ng-model="selectedItem" theme="selectize" ng-disabled="disabled"
      style="width: 300px;" title="Please select">
     <ui-select-match placeholder="Select">{{$select.selected}}</ui-select-match>
     <ui-select-choices repeat="item in ctr.items" refresh="ctr.listItem()"  refresh-delay="0">
     <span ng-bind-html="item">{{item}}</span>
     </ui-select-choices>
</ui-select>