13

私はangularjsプロジェクトに取り組んでおり、ngModel選択内でバインディングしないという問題があります.しかし、同じ概念が別の選択タグと同じ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

最初にコントローラーでデータを作成します (ローカルでもサーバーからでもかまいません)。そして、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>


スクリーンショットはこちらです (ブートストラップ CSS が使用されており、ここには含まれていないことに注意してください)。

ここに画像の説明を入力


変更が機能しているかどうか、コントローラーでテストを行うことができます

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

英語 -> ロシア語

ロシア語 -> スペイン語

スペイン語 -> ロシア語

これが役に立てば幸いです。ありがとう!

于 2015-07-09T06:30:40.917 に答える