选择中的 A​​ngularJS ngModel 指令

Posted

技术标签:

【中文标题】选择中的 A​​ngularJS ngModel 指令【英文标题】:AngularJS ngModel directive in select 【发布时间】:2013-04-22 18:00:48 【问题描述】:

我正在处理一个 angularjs 项目,我遇到了 ngModel 没有绑定在 select 中的问题。但是同样的概念在另一个 select 标记和同一个 html 页面中工作。 下面是代码。

  <select ng-model="selectedFont" 
          ng-options="font.title for font in fonts" 
          ng-change="onFontChange()">
  </select>

onFontChange()函数放在控制器中。

非常感谢任何人的帮助...在此先感谢。

【问题讨论】:

请分享完整代码或分享 jsfiddle 演示 不知道jsfiddle怎么用 你能把onFontChange()的代码贴出来吗? 这是 AngularJS 的一个示例小提琴:jsfiddle.net/3y5Pw 您很可能正在尝试从不同的范围获取字体。尝试在选择下打印它: selectedFont fonts 或为 Chrome 浏览器安装 Batarang 扩展。 【参考方案1】:

基于小马托尼的小提琴:

<div ng-app ng-controller="MyCtrl">
    <select ng-model="opt"
            ng-options="font.title for font in fonts"
            ng-change="change(opt)">
    </select>

    <p>opt</p>
</div>

使用控制器:

function MyCtrl($scope) 
    $scope.fonts = [
        title: "Arial" , text: 'Url for Arial' ,
        title: "Helvetica" , text: 'Url for Helvetica' 
    ];
    $scope.change= function(option)
        alert(option.title);
    

http://jsfiddle.net/basarat/3y5Pw/43/

【讨论】:

您也可以使用$scope.$watch(),如:***.com/questions/15727219/…【参考方案2】:

首先在 Controller 中创建数据(可以是本地的或来自服务器的)。并初始化默认值,强制在 HTML 表单中选择默认项。

// supported languages
$scope.languages = ['ENGLISH', 'SPANISH', 'RUSSIAN', 'HINDI', 'NEPALI'];
// init default language
$scope.language = 'ENGLISH';

现在在您的 HTML 表单中

<select class="form-control" ng-model="language">
    <option ng-repeat="language in languages">language</option>
</select>


屏幕截图在这里(注意使用了 bootstrap CSS,这里不包括在内)。


您可以在控制器中进行测试,更改是否有效

$scope.$watch('language', function (newVal, oldVal) 
    console.log(oldVal + " -> " + newVal);
);

英语 -> 俄语

俄语 -> 西班牙语

西班牙语 -> 俄语

希望这会有所帮助。谢谢!

【讨论】:

以上是关于选择中的 A​​ngularJS ngModel 指令的主要内容,如果未能解决你的问题,请参考以下文章

为啥 ngModel 在选择中添加空白/空选项?

Angular 2 如何在选择列表表单中使用 [(ngModel)]

将ngModel绑定到选择控件的模型[重复]

如果我使用 ngModel、ngValue 以及如何在选择中添加占位符,如何设置选择的默认值

如何检测选择标签(Angular 2)上对 ngModel 的更改?

根据用户选择顺序保存多个选择的ngModel绑定值