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
Post a Comment