Я новичок в угловой.
Почему моя переменная 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, почему?
Спасибо @Pankaj Parkar за подробный ответ здесь и ниже, это отрывок ответа.
Технически, что происходит, когда директива ng-init получает оценку после регистрации функции ng-controller
. Поэтому инициализированные значения из ng-init
недоступны внутри контроллера.
В основном причина приоритета ng-controller
- приоритет. Если вы посмотрите на приоритет, директива ng-init
имеет 450 и параметр приоритета директивы, где директива ng-controller имеет 500, а компиляция директивы DOM AngularJS сортирует их по приоритетам. Таким образом, ng-controller запускается первым.
ng-init