Javascript AngularJS-TypeError:v2。[xxxx]不是函数

Javascript AngularJS-TypeError:v2。[xxxx]不是函数,javascript,css,angularjs,angularjs-scope,angularjs-ng-repeat,Javascript,Css,Angularjs,Angularjs Scope,Angularjs Ng Repeat,我试图使用ng样式根据div元素的数组索引有条件地设置其背景位置。每个div都是使用ng repeat生成的 在我的html页面中,我有以下代码片段: <div style="position:absolute; z-index:1; width:100px; height:100px" ng-style="navigationStyleToilet(o)" ng-repeat="o in arr"></div> $scope.navigationStyle

我试图使用ng样式根据div元素的数组索引有条件地设置其背景位置。每个div都是使用ng repeat生成的

在我的html页面中,我有以下代码片段:

    <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
        }
    }

在my 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
        }
    }
$scope.navigationstyle=[];
$scope.arr=[];
//从service.js获取数据
var categoryInfo=NavigationService.fGetCategoryInfo(strCategoryName);
对于(i=0;i
不幸的是,它给我的错误是“TypeError:v2.navigationStyleToilet不是一个函数”


我尝试了两种不同的方法,但是我无法使用ng样式根据div元素的数组索引有条件地设置其背景位置。有人知道我能做这件事的方法吗?谢谢。

如果要从数组中获取元素,应该在数组中使用索引器。因此,ng风格的索引器应该是

ng-style="navigationStyleToilet[o]"
您的代码
ng style=“navigationStyleToilet(o)”
将假定它是函数并以这种方式调用。因此,您应该使用用户索引器,而不是调用函数。 请确保,o应该索引值以从数组中获取数据

如果您想获得ng repeat生成的索引,可以使用$index。因此,您的代码可能如下所示:

ng-style="navigationStyleToilet[$index]"

首先,你不需要一个seprate函数

您可以将ng repeat更改为以下内容,从而将其置于categoryInfo上:

$scope.categoryInfo

请看这里:


希望这有帮助。:)

您是否在$scope.NavigationStyle?值内有值?基本上,$scope.navigationStyleToilet是一个ng风格的div。div将重复生成,我希望根据每个div的数组索引有条件地为每个div设置不同的背景位置。顺便说一句,我已经更新了我的问题,因为我忘了提到我已经声明并实例化了$scope.navigationStyleToilet=[];下面的答案是根据更新的问题!!!