3

我遇到了一些奇怪的事情,这个例子在 codepen 中工作,但在我的 Ionic 应用程序中不起作用。

当我更改选择标签中的选项时,我想显示所选值,但它不起作用,它显示undefined,我已经尝试了很多方法。

这不是原始代码,原始代码从外部 API 检索值并使用 ngOptions 填充选项(有效,它可以填充)。但它不会更新控制器中的值。

所以我决定让它更简单,但它仍然不起作用:

HTML

<select ng-model="optionSelected" ng-change="selectUpdated()">
    <option value="">Select an option</option>
    <option value="h">Hello</option>
    <option value="b">Bye</option>
</select>

JAVASCRIPT

$scope.selectUpdated = function() {
    console.log('Updated');
    console.log($scope.optionSelected);
};

我认为不需要更多代码,HTML 包含在ion-viewand中ion-content。没有显示错误,只有“更新”输出和undefined.

更改选项时,我得到undefined. 但是codepen中的相同代码可以正常工作.. http://codepen.io/anon/pen/YXvYmq

有人能告诉我会发生什么触发这种奇怪的行为吗?

提前致谢。

4

3 回答 3

7

找到解决方案,将 ngModel 属性作为参数传递给 ngChange。

HTML

<select ng-model="optionSelected" ng-change="selectUpdated(optionSelected)">
    <option value="">Select an option</option>
    <option value="h">Hello</option>
    <option value="b">Bye</option>
</select>

JS

$scope.selectUpdated = function(optionSelected) {
    console.log('Updated');
    console.log(optionSelected);
};
于 2015-07-14T20:31:43.953 回答
3

我今天遇到了同样的问题,必须创建一个解决方法才能正常使用 select。

javascript

$scope.updatePreferredLanguageValue = function() {
   $scope.PreferredLanguage = this.PreferredLanguage;
};

html

<select ng-model="PreferredLanguage" ng-options="Language.id as Language.name for Language in LanguageList" id="LanguageListSelect" name="LanguageListSelect" ng-change="updatePreferredLanguageValue()">
</select>

所以基本上我有一个方法,当值改变时调用,以确保在 $scope 变量上设置了改变。不漂亮,但它有效。

于 2016-02-17T14:31:41.647 回答
2

尝试在您的 ng-model 中使用 $parent 并从您的控制器中调用它。

例子

<select ng-model="$parent.selectedCar">
 <option>...</option>
</select>

参考:https ://github.com/angular/angular.js/wiki/Understanding-Scopes

于 2016-06-09T04:13:02.850 回答