2016-05-06 11 views
1

1つの選択タグモデルの値を別のものにコピーし、チェックボックスを使用してその変更機能をトリガーするスクリプトを実行しようとしています。何が起こるかは、チェックボックスをクリックすると値をコピーしますが、トリガはもう働きません。どちらか一方が失敗したためにモデルの値を設定してトリガーをかけることに矛盾があるようです。ここでAngularJS選択変更トリガー

は私のコードです:ここでは

<!DOCTYPE html> 
<html ng-app="myApp"> 

    <head> 
    <link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 
    </head> 

    <body ng-controller="myCtrl"> 
    <select ng-model="first.selection" id="first" ng-change="changeOver('dean')"> 
     <option value="1">One</option> 
     <option value="2">Two</option> 
     <option value="3">Three</option> 
    </select> <br /> 
    <input type="checkbox" ng-model="same" id="same" ng-change="sameAsAbove(first, second)"> Same as above <br /> 
    <select ng-model="second.selection" id="second" ng-change="changeOver('armada')"> 
     <option value="1">One</option> 
     <option value="2">Two</option> 
     <option value="3">Three</option> 
    </select> 
    <!-- <span id="clickMe">Click Me!</span> --> 
    <script type="text/javascript"> 
     app = angular.module('myApp', []); 
     app.controller('myCtrl', function($scope, $timeout){ 
     $scope.first = {}; 
     $scope.second = {}; 
     $scope.sameAsAbove = function(primary, receiver){ 
      receiver['selection'] = primary['selection']; 
      $timeout(function() { 
       angular.element(document.getElementById('second')).triggerHandler('change'); 
      }, 100); 
     }; 
     $scope.changeOver = function(value){ 
      alert(value); 
     } 
     }); 
     $("#clickMe").click(function(){ 
     // alert("czxvzx"); 
     // $("#same").trigger("click"); 
     $("#changes").change(); 
     }); 
    </script> 
    </body> 
</html> 

はplunkr URLです:DOM本体でhttp://plnkr.co/edit/zErS4DaTgR79SBLbtGOy?p=preview

答えて

1

あなたはこのように、この行を変更する必要があります。

<select ng-model="second.selection" id="second" ng-change="same=second.selection"> 

と、チェックボックスの値

$scope.$watch("same", function(newValue, oldValue){ 
     $scope.changeOver('armada'); 
     //or do anything 

    }); 

plunker demo link

+0

うわーを変更するために、時計を使用して感謝!私は$スコープを知りませんでした。どうもありがとう! –