选择中的 AngularJS ngModel 指令
Posted
技术标签:
【中文标题】选择中的 AngularJS 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);
);
英语 -> 俄语
俄语 -> 西班牙语
西班牙语 -> 俄语
希望这会有所帮助。谢谢!
【讨论】:
以上是关于选择中的 AngularJS ngModel 指令的主要内容,如果未能解决你的问题,请参考以下文章
Angular 2 如何在选择列表表单中使用 [(ngModel)]
如果我使用 ngModel、ngValue 以及如何在选择中添加占位符,如何设置选择的默认值