2

我正在尝试检索 a 的当前选项的值select,但它返回我未定义(我希望它返回我一个对象)。

标记:

<div ng-app ng-controller="MyCtrl">
    <select ng-model="selectedLocal" ng-options="item.Nome for item in locais" ng-change="localSelectChange()">
        <option value="">Locais</option>
    </select>
</div>

控制器:

function MyCtrl($scope) {
    $scope.locais = [{
        ID: 109,
        Nome: 'Aeroporto Internacional Hercilio Luz'
    }, {
        ID: 161,
        Nome: 'Koxixos'
    }, {
        ID: 184,
        Nome: 'Praça XV de Novembro'
    }];

    $scope.localSelectChange = function() {
        alert('$scope.selectedLocal: ' + $scope.selectedLocal); // returns undefined
    }
}

奇怪的部分是我创建了这个 jsfiddle来重现这个问题,使用完全相同的代码,它可以工作。

更新:

我在这里创建了一个 plunkr ,我复制了这个问题。

第一个选择包含在一个带有自己的控制器“MyCtrl”的 div 上,它按预期工作,因为我能够从 ng-change 事件处理函数中检索模型。

第二个选择“属于” DashCtrl,整个 Dash 选项卡视图控制器。当我尝试从 ng-change 事件处理函数中检索模型时,它返回我未定义。这是为什么?

4

3 回答 3

13

尝试将“$scope.selectedLocal.Nome”更改为“this.selectedLocal.Nome”;

当我尝试在控制器内部使用包含时,我遇到了类似的错误......接缝范围丢失。

于 2015-01-16T02:38:11.173 回答
0

您需要声明的对象值。

    $scope.localSelectChange = function() {
            alert('$scope.selectedLocal: ' + $scope.selectedLocal.Nome);
    }

请参阅JSFiddle

于 2014-06-18T21:28:19.253 回答
0

我遇到了同样的问题,尝试在 ng-options 中使用“track by”

<div ng-app ng-controller="MyCtrl">
    <select ng-model="selectedLocal" ng-options="item.Nome for item in locais track by item.ID" ng-change="localSelectChange()">
        <option value="">Locais</option>
    </select>
</div>
于 2016-12-19T10:55:10.273 回答