2016-06-15 4 views
0

Связанная скрипта содержит простое приложение, в котором я хочу, чтобы моя переменная isLoggedIn оставалась обновленной. Проблема в том, что функция вызывается 3 раза за один проход.angularjs ng-view с внешним контроллером

https://jsfiddle.net/michael_loukeris/xprmoq65/

$scope.isLoggedIn = function(){ 
    console.log('errr'); 
    //calling a service 

return false; 
}; 

Что является лучшим способом для достижения связывания в моем случае так, что мой Navbar остается обновляется на основе аутентификации пользователей 2WAY данных.

+0

https://daveceddia.com/controller-function-executed-multiple-times/ –

ответ

0

вы должны использовать ng-show с $scope.variable не $scope.function , поскольку угловыми тронут ng-show несколько раз во время инициализации.

вместо этого использовать ng-init.

в вашем случае:

<ul ng-init='checkUser()'> 
    <li><a href="#/this" ng-show="isLoggedIn">This</a></li> 
    <li><a href="#/that">That</a></li> 
    <li><a href="#/other">Other</a></li> 
    </ul> 

.

app.controller('MainCtrl', function ($scope) { 
$scope.checkUser = function(){ 
    $scope.isLoggedIn = false; 
    console.log('errr'); 
}; 
+0

Ваша точка зрения заключается в использовании функции в Main Controller, которая изменяет значение переменной и вызывает ее при необходимости. Я сделал это и работает. Что я не уверен, что его хорошая практика заключается в том, что в подзаголовке login (я использую угловой маршрут) я должен вызывать $ scope. $ Parent.checkUser(); как вы думаете, это нормально? –

0

Удалить ng-controller="MainCtrl" и не вызывается три раза в перспективе. Используйте переменную, которая задает значение true/false вместо функции.

+0

фактически не является функцией контроллера https://daveceddia.com/controller-function-executed-multiple-times/ эта статья действительно информативна –

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

  • Нет связанных вопросов^_^