2014-11-06 2 views
0

В соответствии с угловыми документами:

Областью является связующим звеном между контроллером приложений и видом. Во время фазы связывания шаблона директивы устанавливали $ watch выражения в области. $ Watch позволяет директивам получать уведомления об изменениях свойств, что позволяет директиве предоставлять обновленное значение DOM.

Теперь мой вопрос: , если моя функция не связана с точки зрения, мы должны использовать $ объем или нет?

+1

Я думаю, вы не должны. Это улучшит производительность вашего приложения, поскольку функция, не связанная с областью, не будет проверяться в каждом цикле дайджеста. – akn

ответ

2

Я предполагаю, что вы имеете в виду, если вы должны делать $ scope.functionName = function(), даже если функция не связана с представлением.

Нет, не следует, почему бы вам не показать функцию, которая не нужна для представления? Также вы получите лучший обзор, какие функции выполняются внутри, только используя функцию funcName().

+0

Правильно, это то, что я думал, но не используя $ scope, может сделать эту функцию глобальной. и он будет доступен из любого места. правильно? –

+0

Я так не думаю. Он все еще находится в контексте контроллера. – Ngschumacher

1

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

Однако есть некоторые случаи, когда вам нужно использовать $scope в функции, не подключенной к представлению, например, если вы хотите передать/получить/широковещать сообщение в дереве областей или получить доступ к чему-либо в родительской области (хотя это не обязательно хорошая практика).

+0

Если вы хотите использовать emit/receive/brodcast, вы можете использовать сервис и передать $ scope в качестве аргумента для некоторого метода этой службы. –

+0

не использует $ scope, не делает функцию глобальной –

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