0

元の質問では、コントローラー関数と呼ばれる要素を特定する方法について尋ねましたが、特に について質問しているのではなく、一般的にng-* ( 、、 、 ng-*)blurrについて質問していることを明確にしませんでした。したがって、それを念頭に置いて:ng-blurng-changeng-focusng-mouseover

どの要素入力がblurr()and/orcheck()関数を呼び出しているかを判断するにはどうすればよいですか?

html

<body ng-app="test">
  <div ng-controller="Cntrlr as cntrlr">
    <form name="meta_test">
      <input type="text" name='inpt' ng-model="cntrlr.inpt" ng-blur="cntrlr.blurr()" ng-change="cntrlr.check()" />
      <input type="text" name='second' ng-model="cntrlr.second" ng-blur="cntrlr.blurr()" ng-change="cntrlr.check()" />
    </form>
  </div>
</body>

js

var app = angular.module("test", []);
app.controller("Cntrlr", ["$scope", function($scope){
  this.blurr = function(){
    alert("which input am I?");
    alert("this is so meta.");
    // ?
  };
  this.check = function(){
    alert("this is how meta I am:");
    alert(this); 

  }
 $scope.Cntrlr = this;  // see: (reference)
 return $scope.Cntrlr; 
}]);

「なぜ彼はこれをしたいのですか?」と自問しているかもしれません。
2 つの理由があります。

  1. 私は電話したいので:

    $scope.user_form[meta_test.[(whatever this element is.name)]].$setValidity('spike', false);

  2. 私は好奇心が強いので。これを行う簡単な方法が必要です。

(参考): 構文としてのコントローラー

4

2 に答える 2

1

これを使って -

<input type="text" name='inpt' ng-model="cntrlr.inpt" ng-blur="cntrlr.blurr($event)" ng-change="cntrlr.check()" />

これは、blurr 関数を引き起こすイベントの jQuery lite バージョンを返します。コントローラーでこの要素を受け取ったら、それを使ってほとんど何でもできます。

イベントの .target 属性は、必要な要素を提供します。

動作するはずです

于 2014-07-07T17:48:16.000 に答える
0

これを試して:

<form name="meta_test">
  <input type="text" name='inpt' ng-model="cntrlr.inpt" ng-blur="cntrlr.blurr()" 
    ng-change="cntrlr.check('One')" />
  <input type="text" name='second' ng-model="cntrlr.second" 
    ng-blur="cntrlr.blurr()" ng-change="cntrlr.check('Two')" />
</form>

JSでは、

this.check = function(Type){
  if(Type == "One"){
    //Then it is the first text box.
  }else if(Type == "Two"){
    //Then it is the second text box.
  }
}
于 2014-07-09T11:05:43.750 に答える