3

所以为了简单起见,我试图用我从 ajax 调用中获得的新项目列表来更新我的选择列表。列表中有项目。我将模型设置为新列表并执行 $scope.$apply()。这在 Firefox 中效果很好,但在 IE 中无效。我究竟做错了什么?是否有一些我缺少的 IE9 东西?(我现在已经找了几个小时,准备放弃了)。感谢我能得到的所有帮助。

HTML:

<select 
  ng-model="SelectedParameter" 
  ng-options="Parameter.Name for Parameter in AllParameters">
</select>

JS:

$.getJSON("/Cont/GetList", {id: id}, 
  function (result) {
    var allParameters = result.Data.AllParameters;
    $scope.AllParameters = allParameters;
    $scope.$apply();  
  }
);
4

3 回答 3

6

你最好用“Angular 方式”来做这件事。不需要 JQuery!事实上,如果您发现自己以“JQuery 方式”做事,那么您可能做错了。Mark Rajcok 不久前在 StackOverflow 上对同样的事情提出了一个非常好的问题(和答案)

应用程序.js

//declare your application module.
var app = angular.module('myApp', []);

//declare a controller
app.controller('MainCtrl', function($scope, $http) {
   //function to update the list
   $scope.updateList = function () {
      $http.get('/Cont/GetList', function(data) {
         $scope.allParameters = data;
      });
   };

   //initial load
   $scope.updateList();
});

索引.html

<!DOCTYPE html>
<html ng-app="myApp">
<head>
   <script src="angular.js"></script>
   <script src="app.js"></script>
</head>
<body>
  <div ng-controller="MainCtrl">
    <button ng-click="updateList()">Update</button>
    <ul>
       <li ng-repeat="parameter in allParameters">{{parameter | json}}</li>
    </ul>

    <!-- EDIT: Because you requested a select.
         or if you wanted to do a select list 
         assuming every object in your array had a "name" property
         you wanted to display in the option text, you could do
         something like the following: 

         (NOTE: ng-model is required for ng-options to work)
         -->
    <select ng-model="selectedValue" ng-options="p as p.name for p in allParameters"></select>

    <!-- this is just to display the value you've selected -->
    <p>Selected:</p>
    <pre>{{selectedValue | json}}</pre>
  </div>
</body>
</html>

编辑:IE中的一个常见问题

因此,首先,如果您在 IE 中遇到问题,我建议您按 F12 并查看您在控制台中遇到的错误。

我见过的最常见的问题是破坏 IE 中的内容,这些问题与 IEconsole.log()中不存在的命令有关。如果是这种情况,您需要创建一个存根,如下所示:

//stub in console.log for IE.
console = console || {};
console.log = console.log || function () {};
于 2013-03-22T22:43:52.000 回答
2

我认为这是一个IE问题。更新前尝试设置display:none,更新后删除display设置。

于 2013-04-09T14:02:08.657 回答
0

我相信最终问题出在这个错误上。几天来,我一直在用非常相似的东西拔头发,从另一个中筛选出来。

一天结束时,选项被动态添加,而 IE9 只是扼杀了它。

<div class="col-lg-2">
    <div class="form-group">
        <label>State</label>
        <select data-ng-model="orderFilter.selectedState"
                data-ng-options="s.StateAbbr for s in states"
                data-placeholder="choose a state…"
                class="form-control">
            <option value=""></option>
        </select>
    </div>
</div>
<div class="col-lg-2">
    <div class="form-group">
        <label>County</label>
        <select data-ng-model="orderFilter.selectedCounty"
                data-ng-options="c.CountyName for c in filteredCounties | orderBy:'CountyName'"
                data-ng-disabled="orderFilter.selectedState == null"
                data-placeholder="Choose a county…"
                class="form-control">
            <option value=""></option>
        </select>
    </div>
</div>

问候,斯蒂芬

于 2014-03-02T22:13:35.840 回答