2

以下は、同じコントローラで発生します。

記事のタイトルのリストを表示するページがあります。ユーザーが記事のタイトルをクリックすると、ポップアップに記事の詳細が表示されます。

記事のタイトルは ng-repeat によって生成されます。

<div class="adItem" ng-click="showArticle = tiki._id" ng-repeat="tiki in tikis track by tiki._id">

記事の詳細も ng-repeat によって生成されます。

<article class="adArticle" ng-show="showArticle === tiki._id" ng-repeat="tiki in tikis track by tiki._id">

記事の詳細の表示/非表示を切り替えるために変数 ' ' と共にng-clickandを使用していることに注意してください。showArticle === 記事タイトルの ID の場合、記事の詳細を表示します。ng-showshowArticle

しかし、これは機能しません。何が間違っていますか?

どうも、

ケビン、

4

1 に答える 1

2

Ng-repeat は、繰り返される要素ごとにスコープを作成します。たとえば、次のようにします。

contoller-scope
child scope1
child scope2

showArticle = tiki._idコントローラースコープではなく、子スコープの変数を設定します。それがあなたがそれに対処できない理由です。

あなたはそれを機能させるべきです: ng-click="setSelected(tiki)"

$scope.setSelected = function(tiki) {
  $scope.showArticle = tiki._id;
}

次に、これが機能します。

または、できますng-click="$parent.showArticle = tiki._id"。(これは悪いスタイルですが、それでも機能します)

ただし、これは悪い方法です。2 回目の繰り返しは必要ありません。ID ではなくオブジェクトを使用するだけです。

$scope.setSelected = function(tiki) {
  $scope.showArticle = tiki;
}

そしてそれを出力に追加します。

于 2015-02-16T18:14:25.330 に答える