【问题标题】:How to execute some instructions on change of selection?如何执行一些有关更改选择的指令?
【发布时间】:2014-09-09 05:50:18
【问题描述】:

如何自定义此代码以使其在每次选择更改时执行一些指令。并将其作为默认值this.annee

html

<span class="form-group" ng-controller="FiltreFicheController as ffCtl">
    <select name="annee" ng-model="annee">
        <option value="2014" ng-selected="ffCtrl.isSelected(2014)" ng-change="ffCtrl.selectElt(2014)">2014</option>
        <option value="2000" ng-selected="ffCtrl.isSelected(2000)" ng-change="ffCtrl.selectElt(2000)">2000</option>
    </select>
</span>

js

app.controller('FiltreFicheController', function($scope, $location){
        var link = document.URL;
        var type_param = (!location.search.indexOf('?', link)?location.search.split('type=')[1].split('&')[0]:'undefined');
        var annee_param = (!location.search.indexOf('?', link)?location.search.split('annee=')[1]:'undefined');
        this.type = (type_param!=='undefined'?parseInt(type_param):1);
        this.annee = (annee_param!=='undefined'?parseInt(annee_param):2014);

        this.isSelected = function(annee){
            return this.select === annee;
        }

        this.selectElt = function(numElt){
            this.annee = numElt;
            window.location.href = link.substring(link.indexOf('/'),link.lastIndexOf('/')) + '/fiche?type=' + this.type + '&annee=' + numElt;
        }
    });

提前致谢!

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    首先,你的模型缺少对控制器的引用,你应该改变它:

    <select name="annee" ng-model="ffCtrl.annee">    
    

    然后你可以在 ngModel 上使用 $watch 或者只使用 ng-change 指令:

     <select name="annee" ng-model="ffCtrl.annee" ng-change="ffCtrl.myFunction()">
        <option value="2014" ng-selected="ffCtrl.isSelected(2014)" ng-change="ffCtrl.selectElt(2014)">2014</option>
        <option value="2000" ng-selected="ffCtrl.isSelected(2000)" ng-change="ffCtrl.selectElt(2000)">2000</option>
    </select> 
    

    或在您的控制器内部:

    $scope.$watch('annee', function() { // My Code here });
    

    【讨论】:

      【解决方案2】:

      html:

         <select name="year"
              ng-model="annee"
              ng-change="isSelected(annee)" 
              ng-options="year as year for year in yearList">
           </select>
      

      控制器:

      function MyCtrl($scope) {
         $scope.yearList=['2014','2015'];
         $scope.annee=$scope.yearList[0];
          $scope.isSelected=function(annee){
              alert(annee);
          }
      }
      

      For your reference

      【讨论】:

      • 但问题是计数停止的最后日期是当年。如何处理?
      • 请注意,当我复制/粘贴您的代码时,它不起作用。你能把它们分开并定义每一块将被粘贴到哪里吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      相关资源
      最近更新 更多