1

ng-styleを使用して配列インデックスに基づいてdiv要素の背景位置を条件付きで設定しようとしています。各divはng repeatを使用して生成されます。私のHTMLページにAngularJS - TypeError:v2。[xxxx]は関数ではありません

、私は次のコードスニペットがあります。私のcontroller.jsで

<div style="position:absolute; z-index:1; width:100px; height:100px" ng-style="navigationStyleToilet(o)" ng-repeat="o in arr"></div> 

を、私は次のコードスニペットがあります

$scope.navigationStyleToilet = []; 
    $scope.arr = []; 
    // get data from service.js 
    var categoryInfo = NavigationService.fnGetCategoryInfo(strCategoryName); 

    for (i = 0; i < categoryInfo.length; i++) 
    { 
     $scope.arr.push(i); 
     var targetImageX = categoryInfo[i].X; 
     var targetImageY = categoryInfo[i].Y; 
     $scope.navigationStyleToilet[i] = { 
      "background-position": targetImageX + " " + targetImageY 
     } 
    } 

を残念ながら、それは私にエラーを与えます"TypeError:v2.navigationStyleToiletは関数ではありません"と表示されます。

私はいくつかのことを試しましたが、ng-styleを使って配列インデックスに基づいてdiv要素のバックグラウンド位置を条件付きで設定することはできません。誰も私がこの仕事をする方法を知っていますか?ありがとう。

+0

$ scope.navigationStyleToiletに値がありますか? – Sajeetharan

+0

値?基本的に$ scope.navigationStyleToiletはdivのng形式です。 divは繰り返し生成され、配列インデックスに基づいて、各divの異なる背景位置を条件付きで設定したいと考えています。 Btw、私は私が$ scope.navigationStyleToilet = []を宣言してインスタンス化したことを忘れているので、私の質問を更新しました。 – Antoni

+0

以下は、更新された質問による回答です! –

答えて

0

配列から要素を取得する場合は、配列でインデクサーを使用する必要があります。だから、NG-スタイルであなたのインデクサ

ng-style="navigationStyleToilet[o]" 

あなたのコードng-style="navigationStyleToilet(o)"あるべき機能として、それを前提とし、そのように呼び出します。だから、関数を呼び出すのではなく、ユーザのインデクサを使うべきです。 配列からデータを取得するには、インデックス値が必要であることを確認してください。

ng-repeatが生成するインデックスを取得する場合は、$ indexを使用できます。したがって、コードは次のようになります。

ng-style="navigationStyleToilet[$index]" 
0

まず、このためにseprate関数は必要ありません。

あなたはそれを変更することにより、categoryInfoにngのリピートを置くことができます。

$scope.categoryInfo 

ここで解決
<div style="position:absolute; z-index:1; width:100px; height:100px" ng-style="{'background-position': o.X + 'px ' + o.Y +'px' }" ng-repeat="o in categoryInfo">{{o}}</div> 

https://plnkr.co/edit/Nh0Kp0zI77JIxcApTYSQ?p=preview

あなたはピクセルまたは%を逃す可能性があります「バックグラウンドポジション」プロパティで必要とされる値で

しかし、その後も、彼らはoverlapsingているあなたはdiv要素の両方が、「背景位置」を持っている上記plunkrで(要素を検査することで)見ることができるように:

をですから、このような何かを探している可能性があります:

ng-style="{'left': o.X + 'px ', 'top': o.Y +'px' }" ng-repeat="o in categoryInfo" 

ここをクリックしてください:https://plnkr.co/edit/g0h7IsG1kSkNQmSLBDWY?p=preview

希望これは役立ちます。 :)

関連する問題