AngularJS - 如何通过嵌套的ng-repeat将id传递给api

时间:2021-07-14 07:41:36
<div>       
        <ul ng-repeat="items in allcategories">
          <p class="padding">{{ items.title }}</p>
          <ion-slide-box show-pager="false" on-slide-changed="slideHasChanged($index)" class="padding">
            <ion-slide ng-repeat="ite in allvodsforcategory">
              <img ng-src="{{ ite.image }}">
            </ion-slide>
          </ion-slide-box>
        </ul>
      </div>

$http.get('http://api.com?user=' + $scope.apiusername + '&pass=' + $scope.apipassword + '&id=' . items.id).success(function(data) {
       $scope.allvodsforcategory = data.videos;
   });

$http.get('http://api.com?user=' + $scope.apiusername + '&pass=' + $scope.apipassword).success(function(data) {
        $scope.allcategories = data.categories;
    });

There is my code you can see the first ng-repeat on the ul item that is listing categories in side I want to list images no you can see the second ng-repeat on the ion-slide now I need to pass the items.id to the controller then put it into the url but I can not find a way to do that please help my all help is appreciated THANK YOU

有我的代码,你可以看到ul项目的第一个ng-repeat,列出了我想要列出图像的类别,你现在我不需要在离子幻灯片上看到第二个ng-repeat我需要传递items.id到控制器然后把它放入网址,但我找不到办法做到这一点,请帮助我的所有帮助,谢谢谢谢你

1 个解决方案

#1


2  

If my understanding of your question is correct, I think that what you would have to do is create an isolate scope for your custom directive (ion-slide). This will allow you to pass the item id as an attribute. And it will be available to use in your controller. What I mean is:

如果我对您的问题的理解是正确的,我认为您需要做的是为您的自定义指令(离子幻灯片)创建一个隔离范围。这将允许您将项目ID作为属性传递。它可以在您的控制器中使用。我的意思是:

    ...
        .directive(ionSlide, function(...) {
             return {
                 scope: {
                      itemId: '@',
                 },
                 .... // Other things
             };
        });

        // In your html you would then have
        ...
       <ion-slide item-id="{{item.id}}" ng-repeat="ite in allvodsforcategory">
                  <img ng-src="{{ ite.image }}">
                </ion-slide>
         ...

        // And in your controller,
        ...
        .controller(function($scope, ...){
            var id = $scope.itemId; // you have your id here.

            $http.get('http://api.com?user=' + $scope.apiusername + '&pass=' + $scope.apipassword + '&id=' id).success(function(data) {
       $scope.allvodsforcategory = data.videos;
     });
});

Hope this helps.

希望这可以帮助。

#1


2  

If my understanding of your question is correct, I think that what you would have to do is create an isolate scope for your custom directive (ion-slide). This will allow you to pass the item id as an attribute. And it will be available to use in your controller. What I mean is:

如果我对您的问题的理解是正确的,我认为您需要做的是为您的自定义指令(离子幻灯片)创建一个隔离范围。这将允许您将项目ID作为属性传递。它可以在您的控制器中使用。我的意思是:

    ...
        .directive(ionSlide, function(...) {
             return {
                 scope: {
                      itemId: '@',
                 },
                 .... // Other things
             };
        });

        // In your html you would then have
        ...
       <ion-slide item-id="{{item.id}}" ng-repeat="ite in allvodsforcategory">
                  <img ng-src="{{ ite.image }}">
                </ion-slide>
         ...

        // And in your controller,
        ...
        .controller(function($scope, ...){
            var id = $scope.itemId; // you have your id here.

            $http.get('http://api.com?user=' + $scope.apiusername + '&pass=' + $scope.apipassword + '&id=' id).success(function(data) {
       $scope.allvodsforcategory = data.videos;
     });
});

Hope this helps.

希望这可以帮助。