AngularJS проблем с подаване на параметър


1

Налага ми се да разуча Angular и след като прегледах набързо лекции от курса в академията, започнах едно от проектчетата дадени там.

Проблем ми в момента е, че се опитвам с $location.path() да подам едно id и не го получавам в контролера през $routeParams. И url, и routing-а ги направих както в един от демо проектите от курса.

Това е извикването на $location.path() в първия контролер:

https://github.com/vonko/MusicFactory/blob/master/MusicFactory.Client/app/albums/show-albums/show-albums-controller.js

Това е routing-a:

https://github.com/vonko/MusicFactory/blob/master/MusicFactory.Client/app/app.js

Ето тук не го получавам(а трябва):

https://github.com/vonko/MusicFactory/blob/master/MusicFactory.Client/app/albums/update-album/update-album-controller.js

Някой може ли да ми посочи къде греша?

Също искам да попитам има ли начин през $location.path() да подам целия обект, за да не се налага в следащия контролер да правя заявка в базата?




Отговори



2

Здравей,

Може би е, защото не си казал, че искаш да вземеш $routeParams.

Тук го ползваш -

function UpdateAlbumController($scope, $routeParams, $location, AlbumsService)

После малко по - надолу обаче никъде не го include-ваш:

.controller('UpdateAlbumController', ['$scope', '$location', 'AlbumsService', UpdateAlbumController])

Така:

.controller('UpdateAlbumController', ['$scope', '$routeParams', '$location', 'AlbumsService', UpdateAlbumController])

би трябвало да работи.

За подаването на целия обект, според мен си е ОК да се подава само ID и след това в UpdateAlbumController - а съответно да си дърпаш обекта. В случая може DTO - тата да са ти едни и същи (за update и за показването на страницата), но да кажем започваш да имаш повече информация, която няма смисъл да показваш, а пък трябва да може да се update - ва. Тогава ще имаш 2 DTO - та най - вероятно и няма да ти върши работа подаването на някакво орязано DTO в UpdateAlbumController. Дано е станало ясно какво имах предвид. ;д


от mbelev (2312 точки)


1

Мда, точно това е грешката днес сутринта си я открих.

Мога ли да попитам и за друг проблем?

Тук пълня един селект с обекти в контролера. Появява се един нежелан от мен option, който е празен. Пробвах да пълня селекта по всички начини и пак се появява. В нета четох за този проблем и като решение препоръчваха или ng-init, или да се инстанцира в контролера обекта за ng-model на селекта. Пробвах и двата варианта без успех.

Ето тук е контролера:

https://github.com/vonko/MusicFactory/blob/master/MusicFactory.Client/app/artists/add-artist/add-artist-controller.js

Тук е view-то:

https://github.com/vonko/MusicFactory/blob/master/MusicFactory.Client/app/artists/add-artist/add-artist-view.html

Има ли начин да го махна този option в моя сценарии?


от ivan.mihov1 (4988 точки)


2

Пробвай да ползваш ng-options в select - а. Документацията им със сигурност ще го обясни по - добре от мене, за това ето линк направо: https://docs.angularjs.org/api/ng/directive/select

Ето един бърз пример, който направих. Би трябвало да ти свърши работа: http://jsfiddle.net/e8d6s68a/55/


от mbelev (2312 точки)