Почему переменная ng-init не переопределена контроллером? [Дубликат]

0

Я новичок в угловой.

Почему моя переменная ng-init не переопределяется в контроллере?

<div ng-init="name='Emmad'" ng-controller="TodoController as todoCtrl" >
     <my-name></my-name>
</div>

мой контроллер:

App.controller('TodoController',['$scope',function($scope){
    $scope.name = "Zahid";
}]);

и моя директива:

App.directive('myName',function(){
    return {
        restrict: 'EA',
        template: '<b>{{name}}<b>'
    }
});

Выход всегда:

Emmad

Это должно быть "zahid", потому что я использую директиву в контроллере, а контроллер переопределяет переменную имени.

Вопросов:
1-Почему его не "захид"?
2-Если бы я поставил точку останова на

$scope.name = "Zahid";

Я не вижу переменную 'name' в $ scope, почему?

  • 0
    stackoverflow.com/questions/17104639/...
  • 2
    вам нужно посмотреть на этот ответ stackoverflow.com/a/33285651/2435473, где я упоминаю, как именно работает ng-init
Показать ещё 1 комментарий
Теги:
controller
ng-init

1 ответ

0
Лучший ответ

Спасибо @Pankaj Parkar за подробный ответ здесь и ниже, это отрывок ответа.

Технически, что происходит, когда директива ng-init получает оценку после регистрации функции ng-controller. Поэтому инициализированные значения из ng-init недоступны внутри контроллера.

В основном причина приоритета ng-controller - приоритет. Если вы посмотрите на приоритет, директива ng-init имеет 450 и параметр приоритета директивы, где директива ng-controller имеет 500, а компиляция директивы DOM AngularJS сортирует их по приоритетам. Таким образом, ng-controller запускается первым.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню