2016-05-10 2 views
2

В соответствии с docs, $route.current содержит controller и locals.

Например, если это один из моего маршрута:

$routeProvider 
    .when('/item1/:value', { 
     templateUrl: 'item1.html', 
     controller: 'Item1Controller', 
     title: 'Item 1' 
    }); 

{{$route.current}} печатает {"params":{"value":"value1"},"pathParams":{"value":"value1"},"loadedTemplateUrl":"item1.html","locals":{"$template":"<p>item 1:{{params}}</p>","$scope":"$SCOPE"},"scope":"$SCOPE"}

  1. Почему нет controller?

  2. {{$route.current.title}} распечатывает "Пункт 1." Но выше нет собственности title?

Что именно содержит $route.current?

+0

Как и где вы * «распечатываете» *? FYI, 'JSON.stringify()' не распечатывает свойства функции – Phil

+0

Как и в случае с документами, присвойте '$ route'' 'rootScope', а затем в html просто используйте' {{$ route.current}} '. – Shawn

ответ

3

$route.current объект имеет несколько документально подтвержденных свойств, и controller является одним из них. Все свойства, которые были определены в объекте определения маршрута с when методом доступны в $route.current, поскольку последний prototypically inherits from a copy of the former:

$route.current.hasOwnProperty('controller') === false; 

Object.getPrototypeOf($route.current).hasOwnProperty('controller') === true; 

'controller' in $route.current === true; 

свойства, которые хранятся в $route.current прототипу объект не сериализованный, когда объект преобразуется в строку. Угловая интерполяция не должна использоваться как надежный способ получить ценный вывод трассировки, вместо этого всегда используйте .

+0

... или отладчик – Phil

+0

Получил это. Благодарю. В этом примере в документах также выдается '{{$ route.current.params}} и' {{$ route.current.scope.name}} '. Ну, почему эти два свойства «params» и «scope» не документированы? Я новичок в AngularJs, и я действительно надеюсь, что документация будет завершена. – Shawn

+0

Параметр @Shawn не документирован, потому что предлагаемый способ его получения - $ routeParams'. И вряд ли стоит использовать «$ route.current.scope». Вы можете использовать все, что найдете там, например. '$ route.current.originalPath' недокументирован, но полезен. – estus

Смежные вопросы