-1

在 AngularJS 文档中,他们引用了这个 fiddle ,我从这里得到了一个简单的 jsfiddle 。

整个 HTML:

<body ng-app="demoApp">
<div ng-controller="demoController">
<table>
  <tr>
    <td>Select Category
      <select ng-model="selectedCategory"
              ng-options="cat as cat for cat in categories">
      </select>
    </td>
    The category selected is: {{selectedCategory}}
  </tr>
  <tr>
    <td>Select CategoryId
      <select ng-model="selectedCatId"
              ng-options="ds as ds.id for ds in dataset">
      </select>
      The category id selected is: {{selectedCatId}}
    </td>
  </tr>
</table>
</div>
</body>

AngularJS 控制器:

angular.module('demoApp', []).controller('demoController', function($scope) {
  $scope.categories = ["CAT1", "CAT2", "CAT3"];
  $scope.dataset = [
                    { "category": "CAT1", "id": "CAT_ID11" },
                    { "category": "CAT1", "id": "CAT_ID12" }
                   ];

  $scope.selectedCategory = categories[1];
  $scope.selectedCatId = $scope.dataset[1];
});

我在小提琴中看到的结果:

在此处输入图像描述

除了没有看到初始化之外,我也没有看到列表项,也不知道为什么。我错过了什么?

4

4 回答 4

1

类别未定义。全球宣言——

var categories=["CAT1", "CAT2", "CAT3"];

类别也是一个数组,所以,

<select ng-model="selectedCategory"
                ng-options="cat for cat in categories">
        </select>

检查这个小提琴 -

http://jsfiddle.net/RahulB007/0a1xbxm2/2/

于 2014-11-10T18:49:59.570 回答
1

您缺少$scope类别的 ,因此模板无权访问其值。

只需执行以下操作:

 $scope.selectedCategory = $scope.categories[1];

这是一个小提琴:http: //jsfiddle.net/gleezer/0a1xbxm2/3/

于 2014-11-10T18:51:06.593 回答
1

如果您在浏览器中打开开发工具控制台,您将看到以下错误消息:

ReferenceError:未定义类别

这意味着您的代码尝试访问未定义的变量。事实上:

$scope.selectedCategory = categories[1];

应该

$scope.selectedCategory = $scope.categories[1];

在开发过程中,始终保持控制台打开。

于 2014-11-10T18:52:13.103 回答
0

在您的小提琴中,您有一个工作和非工作版本。

一个不起作用的原因是因为角度检查它们是否是同一个对象,而不是对象的值是否相同。

在对象上选择一个属性(通常是唯一 ID)并通过track by.

通过这样做,您的标记将从此开始:

ng-options="opt as opt.label for opt in options">

对此:

ng-options="opt as opt.label for opt in options track by opt.value">

这是你的小提琴更新了我的工作补充

于 2014-11-10T18:50:13.783 回答