13

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

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

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

任何人的帮助都是非常可观的......在此先感谢。

4

2 回答 2

21

基于小马托尼的小提琴:

<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/

于 2013-04-29T07:10:52.043 回答
3

首先在 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);
});

英语 -> 俄语

俄语 -> 西班牙语

西班牙语 -> 俄语

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

于 2015-07-09T06:30:40.917 回答