javascript - angular ui-sref inside nested ng-repeats -


i`m having trouble @ time of listing elements inside ng-repeat directives while attach them ui-sref attribute. have tried using ng-click , $state.go inside controller without success.

btw, i`m passing params ui-sref directives , params ok when @ console, api route wrong.

have searched hours cannot find answer.

here code:

    <h4 class="list-group-item-heading">{{tasklist.name}}</h4>     <div class="table-responsive connectlist" ui-sortable="sortableoptions" ng-repeat="task in tasklist.tasks">         <span class="btn btn-primary" ui-sref="project-detail.taskedit({id:task.id})"> edit </span>         <span class="btn btn-primary" ui-sref="project-detail.taskdelete({id:task.id})"> remove </span>     </div>     <div class="row">         <button class="btn btn-xs btn-new-task" ui-sref="project-detail.tasknew({id:tasklist.id})">             new task         </button>     </div> </div> 

and states i`m calling:

(function() { 'use strict';  angular     .module('velettaapp')     .config(stateconfig);  stateconfig.$inject = ['$stateprovider'];  function stateconfig($stateprovider) {     $stateprovider     .state('project', {         parent: 'entity',         url: '/project',         data: {             authorities: ['role_user'],             pagetitle: 'velettaapp.project.home.title'         },         views: {             'content@': {                 templateurl: 'app/entities/project/projects.html',                 controller: 'projectcontroller',                 controlleras: 'vm'             }         },         resolve: {             translatepartialloader: ['$translate', '$translatepartialloader', function ($translate, $translatepartialloader) {                 $translatepartialloader.addpart('project');                 $translatepartialloader.addpart('global');                 return $translate.refresh();             }]         }     })     .state('project-detail', {         parent: 'entity',         url: '/project/{id}',         data: {             authorities: ['role_user'],             pagetitle: 'velettaapp.project.detail.title'         },         views: {             'content@': {                 templateurl: 'app/entities/project/project-detail.html',                 controller: 'projectdetailcontroller',                 controlleras: 'vm'             }         },         resolve: {             translatepartialloader: ['$translate', '$translatepartialloader', function ($translate, $translatepartialloader) {                 $translatepartialloader.addpart('project');                 return $translate.refresh();             }],             entity: ['$stateparams', 'project', function($stateparams, project) {                 return project.get({id : $stateparams.id}).$promise;             }],             loadplugin: function ($oclazyload) {                 return $oclazyload.load([                     {                         name: 'ui.sortable',                         files: ['app/plugins/ui-sortable/sortable.js']                     }                 ]);             }         }     })             .state('project-detail.tasklist', {                 parent: 'project-detail',                 url: '/task-list/new',                 data: {                     authorities: ['role_user']                 },                 onenter: ['$stateparams', '$state', '$uibmodal', 'project',function ($stateparams, $state, $uibmodal, project) {                         $uibmodal.open({                             templateurl: 'app/entities/task-list/task-list-dialog.html',                             controller: 'tasklistdialogcontroller',                             controlleras: 'vm',                             backdrop: 'static',                             size: 'lg',                             resolve: {                                 entity: function () {                                     return {                                         name: null,                                         datecreated: moment().utc().format().slice(0, -1)+'.000z',                                         isprivate: null,                                         id: null,                                         project: project.get({id : $stateparams.id}).$promise                                     };                                 },                                 translatepartialloader: ['$translate', '$translatepartialloader', function ($translate, $translatepartialloader) {                                     $translatepartialloader.addpart('tasklist');                                     return $translate.refresh();                                 }]                             }                         }).result.then(function () {                             $state.go('project-detail', null, {reload: true});                         }, function () {                             $state.go('project-detail');                         });                     }]             })             .state('project-detail.tasknew', {                 parent: 'project-detail',                 url: '/task/new',                 data: {                     authorities: ['role_user']                 },                 onenter: ['$stateparams', '$state', '$uibmodal','tasklist', function ($stateparams, $state, $uibmodal, tasklist) {                         $uibmodal.open({                             templateurl: 'app/entities/task/task-dialog.html',                             controller: 'taskdialogcontroller',                             controlleras: 'vm',                             backdrop: 'static',                             size: 'lg',                             resolve: {                                 entity: function () {                                     return {                                         creatorid: null,                                         title: null,                                         type: null,                                         datecreated: moment().utc().format().slice(0, -1)+'.000z',                                         datedue: null,                                         taskstatus: null,                                         priority: null,                                         iscompleted: null,                                         id: null,                                         tasklist: ['$stateparams', 'tasklist', function($stateparams, tasklist) {                                             return tasklist.get({id : $stateparams.id}).$promise;                                         }]                                     };                                 },                                 translatepartialloader: ['$translate', '$translatepartialloader', function ($translate, $translatepartialloader) {                                         $translatepartialloader.addpart('task');                                         return $translate.refresh();                                 }]                             }                         }).result.then(function () {                             $state.go('project-detail', null, {reload: true});                         }, function () {                             $state.go('project-detail');                         });                     }]             })             .state('project-detail.taskedit', {                 parent: 'project-detail',                 url: '/task/{id}/edit',                 data: {                     authorities: ['role_user']                 },                 onenter: ['$stateparams', '$state', '$uibmodal','task', function ($stateparams, $state, $uibmodal, task) {                         $uibmodal.open({                             templateurl: 'app/entities/task/task-dialog.html',                             controller: 'taskdialogcontroller',                             controlleras: 'vm',                             backdrop: 'static',                             size: 'lg',                             resolve: {                             entity: ['task', function(task) {                             return task.get({id : $stateparams.id}).$promise;                             }],                             translatepartialloader: ['$translate', '$translatepartialloader', function ($translate, $translatepartialloader) {                                         $translatepartialloader.addpart('task');                                         return $translate.refresh();                                 }]                             }                         }).result.then(function () {                             $state.go('project-detail', null, {reload: true});                         }, function () {                             $state.go('project-detail');                         });                     }]             })             .state('project-detail.taskdelete', {                 parent: 'project-detail',                 url: '/task/{id}/delete',                 data: {                     authorities: ['role_user']                 },                 onenter: ['$stateparams', '$state', '$uibmodal','task', function ($stateparams, $state, $uibmodal,task) {                         $uibmodal.open({                             templateurl: 'app/entities/task/task-delete-dialog.html',                             controller: 'taskdeletecontroller',                             controlleras: 'vm',                             size: 'md',                             resolve: {                                 entity: ['task', function (task) {                                         return task.get({id: $stateparams.id}).$promise;                                     }]                             }                         }).result.then(function () {                             $state.go('project-detail', null, {reload: true});                         }, function () {                             $state.go('^');                         });                     }]             }) 

thanks lot!

take @ url of project-detail.taskedit:

url: '/task/{id}/edit', 

now, parent state, project-detail, url:

url: '/project/{id}', // note same {id} child 'project-detail.taskedit' state 

on both state have same parameter name id, can change url of project-detail.taskedit

url: '/task/{taskid}/edit', // new parameter name won't ui-router confuse params , parent parameters! :) 

and ui-sref should be:

ui-sref="project-detail.taskdelete({id:tasklist.id, taskid:task.id})" 

this make ui-router able attach parameter correct value.

note should change onenter settings of project-detail.taskdelete changing reference $stateparams.id $stateparams.taskid (and on other places should referencing new taskid parameter).

you should make same changes in 'project-detail.taskedit' state (replace parameter taskid , on...)


Comments