0

Я использую область действия как «истина» в директиве. Итак, теперь эта область действия переходит от родительского к дочернему, но не наоборот. Я печатаю сейчас scope.name 2 раза. Сначала в родительском пространстве, второй в директиве. Теперь я должен получить 2 разных значения. Но я получаю одинаковое значение для обоих. Помогите объяснить!Сфера true в директиве, дающая неправильный результат

//module declaration 
 
var app = angular.module('myApp',[]); 
 

 
//controller declaration 
 
app.controller('myCtrl',function($scope){ 
 
$scope.name = "Peter"; 
 
}); 
 

 
//app declaration 
 
app.directive('myStudent',function(){ 
 

 
return{ 
 
\t template: "{{name}}", 
 
\t scope:true 
 
} 
 
controller: [function(){ 
 
\t $scope.name = "Roger" 
 
}] 
 

 
});
<body ng-app="myApp" ng-controller="myCtrl"> 
 

 
{{name}}, 
 

 
<my-student></my-student> 
 

 
</body> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.5/angular.min.js"></script>

ответ

1

Ваш контроллер не имеет директивы. Я разместил его внутри и добавил зависимость $scope. Оно работает!

//module declaration 
 
var app = angular.module('myApp',[]); 
 

 
//controller declaration 
 
app.controller('myCtrl',function($scope){ 
 
$scope.name = "Peter"; 
 
}); 
 

 
//app declaration 
 
app.directive('myStudent',function(){ 
 

 
return{ 
 
\t template: "{{name}}", 
 
\t scope:true, 
 
     controller: ['$scope', function($scope) { 
 
      $scope.name = "Roger" 
 
     }] 
 
} 
 

 

 
});
<body ng-app="myApp" ng-controller="myCtrl"> 
 

 
{{name}}, 
 

 
<my-student></my-student> 
 

 
</body> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.5/angular.min.js"></script>

+0

Выполняется отлично! Благодарю. – Deadpool

+0

@Deadpool, пожалуйста, примите к сведению ответ, если сочтет это полезным. – tanmay

+0

Осталось времени. – Deadpool

1

Написать свой контроллер внутри DDO.

//app declaration 
app.directive('myStudent',function(){ 

return{ 
    template: "{{name}}", 
    scope:true, 
    controller: ['$scope', function($scope){ 
     $scope.name = "Roger" 
    }] 
} 

Возможно, это решит вашу проблему.

+0

Кстати, вам также нужно ввести $ scope директивному контроллеру, иначе выдается ошибка. Кроме того, какая полная форма DDO? – Deadpool

+0

@Deadpool, спасибо, я забыл об этом. – SaiUnique

+1

@Deadpool «Объект определения директивы» – tanmay

0

Легко сделать объект в родительском контроллере, так что он может быть переплетены с директивой т.е. вар х = {}; x.value = значение; // то, что вы хотите передать, попробуйте получить к нему доступ.