0

我正在构建一个角度应用程序;我必须设置一个来自$scope.ecole.niveauid我的控制器的默认值。为此,我刚刚编写了以下代码:

<select class="form-control" name="niveau">
      <option value="{[{niveau.id}]}"
              ng-repeat="niveau in niveaux"
              ng-selected="niveau.id == ecole.niveauid">
              {[{niveau.libelle}]}
      </option>
 </select>

它真的很棒。

现在我需要检索选定的值并将其传递给我的控制器的函数。所以我补充说:

<select class="form-control"
          ng-model="niveau"
          ng-change="reload(niveau)">

          <option value="{[{niveau.id}]}"
                  ng-repeat="niveau in niveaux"
                  ng-selected="niveau.id == ecole.niveauid">
                  {[{niveau.libelle}]}</option>
</select>

在我的控制器中,我有:

 $scope.reload = function (item) {
        console.log(item);
    }

  $scope.niveaux = [
        {
            "id": 1,
            "libelle": "level1"
        },
        {
            "id": 2,
            "libelle": "level2"
        },
        {
            "id": 3,
            "libelle": "level3"
        }];
 $scope.ecole.niveauid = 3;

一切正常,但我没有我的默认值了。请问如何设置默认值并根据 $scope 控制器检索更改的值?

4

1 回答 1

1

在您的控制器范围内创建一个选定的值对象,并在设置 niveaux 后在该对象上设置 id 属性。

$scope.niveaux = [
    {
        "id": 1,
        "libelle": "level1"
    },
    {
        "id": 2,
        "libelle": "level2"
    },
    {
        "id": 3,
        "libelle": "level3"
    }];

$scope.selectedValue = {id: "2"};  //selected value onload (pass your selected value here)

$scope.reload = function (){
    var selectedId = $scope.selectedValue.id;
    //do something
}

然后在您的 HTML 中,您只需要更新您的绑定。您不再需要指定 ng-selected ,因为它会自动将 ng-model 与选项 value 绑定value="{[{niveau.id}]}"。您只需要在加载 niveaux 列表后设置一次选定的属性。

<select class="form-control"
          ng-model="selectedValue.id"
          ng-change="reload()">

          <option value="{[{niveau.id}]}"
                  ng-repeat="niveau in niveaux">
                  {[{niveau.libelle}]}</option>
</select>
于 2017-01-28T19:44:51.877 回答