【问题标题】:AngularJS ngModel directive in select选择中的 A​​ngularJS ngModel 指令
【发布时间】: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 扩展。

标签: select angularjs


【解决方案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/

【讨论】:

【解决方案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);
});

英语 -> 俄语

俄语 -> 西班牙语

西班牙语 -> 俄语

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

【讨论】:

    猜你喜欢
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2014-03-24
    • 2023-03-23
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多