AngularJS 选择的组合框不加载 $http.get 变量

Posted

技术标签:

【中文标题】AngularJS 选择的组合框不加载 $http.get 变量【英文标题】:AngularJS chosen combo box does not load $http.get variables 【发布时间】:2016-05-05 06:28:50 【问题描述】:

所以这与我之前的问题有关:

Dynamically add options to a Angular chosen combo box

基本上是这样的:

 <select  ui-jq="chosen" ng-model='program_list'  class="form-control">
    <option value=""></option>
    <option ng-repeat="program in programs"> program.title </option>
</select>

虽然我尝试了 ng-repeat 和 ng-options,但它不起作用。如果它是静态数据,它可以工作,但从 $http.get 获取的数据不会作为选项推送。

然而,我后来发现:(其中 a 是 $scope)

a.programs=["id":"1","title":"This is a sample","id":"2","title":"Sample Title"];

在我的控制器中推送到组合框,所以最后我意识到问题出在这里:(其中 b 是 $http)

 b.get('http://localhost/training_system/retrieve_train.php?program=Y')
.then(function (result) 
    //a.programs=result.data;
    var prog=[];
    for(var key in result.data)
        prog.push(result.data[key]);

    
    a.programs=prog;    

    );

我几乎解决了它,但我无法让它工作。如果我提醒(a.programs),这会留下一个空白通知。最后怎么解决?

(顺便说一句,如果我将变量写在组合框之外,例如:)

<label class="form-label" for="field-1">Select Training Program <span ng-repeat='program in programs'>program.title</span></label>

它出现了。只是不在组合框内。

---这可能会与我之前的问题合并,我只需要找到它的解决方案。

【问题讨论】:

你能检查一下选择元素,看看有没有选项吗? 没有选项。它主要是选择组合框结构 【参考方案1】:

它可以是您正在使用的 jquery 插件,也可以是您的 rest 端点。尝试从这个端点获取http,看看它是否更快..https://httpbin.org/get?item1=Option1&amp;item2=Option2。您需要稍微更改一下您的控制器代码,因为它会以不同的数据结构进行响应。这应该有效:

$http.get('https://httpbin.org/get?item1=Option1&item2=Option2')
.then(function (result) 
    var prog=[];
    for(var key in result.data.args)
        prog.push(result.data.args[key]);

    
    $scope.programs = prog;    

);

然后在 html 中:

<h1>Selected item: program_list</h1>
<select ng-model='program_list'  class="form-control">
    <option value="">Select one</option>
    <option ng-repeat="program in programs"> program </option>
</select>

Here 是一个可以摆弄的笨蛋。请注意,这不使用 jquery 插件,因此如果它添加了额外的功能,我的示例可能不适用。

【讨论】:

我试过了,它可以工作......除了它没有 ui-jq 线。当我添加它时,选项不再出现。所以它必须是 jquery 插件......它不适用于 http.get 但适用于静态数据 我确实需要选择的插件,因为非多重下拉菜单是可搜索的,而且我有大量数据。并且选择中的多个下拉列表允许多个选择 也许你应该使用像this这样的纯角度多重下拉库。【参考方案2】:

我通过以下方式解决了这个问题:

window.setInterval(function() 
$('.chosen').trigger('chosen:updated');
, 1000);

【讨论】:

以上是关于AngularJS 选择的组合框不加载 $http.get 变量的主要内容,如果未能解决你的问题,请参考以下文章

窗口加载时WPF级联组合框不绑定

MS Access - 级联第二个组合框不级联

angularjs中的LOV

为啥这个组合框不显示项目?

组合框不显示图像

组合框不显示数据项