ngModel不绑定到select选项

时间:2017-07-13 09:51:47

标签: angularjs

我无法弄清楚为什么我无法绑定到选择元素 有我的代码:

<select ng-model="site" ng-change="getAll()">
  <option value="SG1">SG1</option>
  <option value="PZ1">PZ1</option>
  <option value="NE1">NE1</option>
</select>

getAll()发出关于“网站”的提醒但var永远不会更新。 除了在getAll()

之外,$ scope.site是神经使用
  $scope.getAll = function () {
    alert($scope.site);
  }

如果我将$ scope.site设置为一个值,则显示但不会更新

编辑: 我忘了一个大细节...... 选择是使用ng-include指令

显示的
<section id="sectionLeft" ng-include="nav[navId]">

</section>

2 个答案:

答案 0 :(得分:1)

ng-include创建一个新的范围,原型继承自您的控制器。因此,您最初是从控制器中读取所选选项,但是当select元素写入新选择的选项时,它最终会写入继承的范围。

您可以改为绑定到对象。

控制器:

    $scope.data = { site: "SG1" };
    $scope.getAll = function() {
        alert($scope.data.site);
    }

模板:

    <select ng-model="data.site" ng-change="getAll()">
        <option value="SG1">SG1</option>
        <option value="PZ1">PZ1</option>
        <option value="NE1">NE1</option>
    </select>

有关详细信息,请参阅this answer

如果您不喜欢切换到对象,请查找controller as语法并直接绑定到控制器而不是$scope

答案 1 :(得分:0)

我已经摆弄了您的代码,我可以在提醒框中获取更新后的值。

$scope.getAll = function() {
    alert($scope.site);
};

Working Fiddle