0

私は角度にかなり慣れていません。私がしたいのは、ボタンがクリックされたときに div のクラスを置き換えることです。「ng-class」を使用すると、ページ上のすべての div のクラスがそのクラスに変更されます。置換するものを 1 つ選択するだけです。

このjsfiddleは、私がやろうとしていることを示しています。jQuery を使用しようとしていますが、ご覧のとおり、このコンテキストでは機能していません。私の推測では、それを行うにはもっと「角度のある」方法があると思います。助言がありますか?

jsfiddle のコードは次のとおりです。

<div ng-controller="MyCtrl">
<div class="test1">
    Text1
</div>
<div class="test1">
    Text2
</div>
<button ng-click="click($event)">Click</button>
</div>

var myApp = angular.module('myApp', []);

function MyCtrl($scope) {

   $scope.click = function (e) {
       var source = e.target || e.srcElement;
       var div = source.prev("div.test1:first");
       div.toggleClass('test1');
   };
}

.test1 {
  color: blue;
}
4

1 に答える 1

3

はい、AngularJS 以外の方法でアプローチしようとしています。AngularJS では、モデルの操作に集中し、装飾的に UI を記述し、AngularJS に残りを理解させる必要があります。

問題にアプローチする 1 つの方法は、次のようなものです。

function MyCtrl($scope) {

    $scope.selected = true;

    $scope.click = function () {
      $scope.selected = false;  
    }; 
}

そしてHTMLで:

<div ng-controller="MyCtrl">
    <div ng-class="{test1: selected}">
        Text1
    </div>
    <div class="test1">
        Text2
    </div>
    <button ng-click="click()">Click</button>
</div>

ここで jsFiddle を使用します: http://jsfiddle.net/CqHDn/ですが、これは実際には 1 つの方法にすぎません。ここでの重要な質問は次のとおりです。最初の div の (機能的に言​​えば) 何が特別なので、そのクラスを反転させたいのでしょうか? おそらく、モデルで機能的な概念を表現する必要があります。

jQueryに関する限り、AngularJSを学習している間はjQueryを完全に削除することをお勧めします. 私だけではありません: https://stackoverflow.com/a/15012542/1418796

于 2013-03-05T15:38:11.920 に答える