2014-12-21 4 views
3

Угловая документация советует использовать угловые услуги угловые выражения:Как получить доступ к угловому сервису в выражении вида?

Вместо использования услуги, как $ окна и $ расположение в функциях, вызываемых из выражений. Такие услуги обеспечивают макетируемый доступ к глобальным.

- https://docs.angularjs.org/guide/expression#context

Однако эти службы не представляется, в рамках обзора по умолчанию, например,

{{$location || 'Undefined'}} 

Производит "Неопределенный".

Если я хочу получить доступ к службе $location с точки зрения, мне нужно ввести ее в область видимости?

/* some controller */ function ($scope, $location) { 
    $scope.$location = $location; 
} 
+0

Да. Вывести методы и свойства в представления через $ scope. Хотя бит анти-шаблона, потому что вы плотно соединяете представление с $ location. Вы должны абстрагироваться от метода или, еще лучше, директивы. – LiverpoolsNumber9

+0

Это был вопрос «из любопытства», чем практический. В этом аспекте документация немного вводит в заблуждение. Это означает, что в контексте выражения доступна функция $ window. – Gajus

+0

Не уверен, что это ... но в любом случае, чтобы «придерживаться» проверяемых шаблонов в Angular, вам, вероятно, следует использовать либо вызов метода в контроллер, либо директиву, которая инкапсулирует то, что вы пытаетесь сделать. Я попробую ответить. – LiverpoolsNumber9

ответ

1

Лучшее, что нужно сделать, это инкапсулировать то, что вы пытаетесь сделать, в вызове метода контроллера или в директиве. Например, если вы хотите довести текущий URL до представления, вы должны, вероятно, сделать что-то вроде следующего.

VIEW

<p>{{ CurrentUrl }}</p> 

CONTROLLER

(function(app){ 

    app.controller("myController",["$scope","$location",function($scope,$location){ 

     $scope.CurrentUrl = $location.$$path; // or whatever is most useful to display 

    }]); 

})(myApp); 

Это означает, что вы по образцу МОК Угловое, а не плотно сцепления "$ местоположение" либо на ваш взгляд или контроллера.

Использование «$ location» здесь, очевидно, является лишь примером. Вы можете использовать «$ window» или что угодно.

+0

Gajus Kuizinas - Я откинул назад ваше редактирование. Поскольку это не было редактированием, это была ваша версия того, что хотел OP, а не мой. Если вы хотите ответить на вопрос, сделайте это. – LiverpoolsNumber9

+0

Да, а также предотвращает выставление $ location var. –