范围在指令中给出错误的结果

时间:2016-12-19 08:40:42

标签: javascript angularjs angularjs-scope angular2-directives

我正在使用范围' true'在指令中。所以现在,这个指令范围从父级传递给子级,但不是相反的。我现在打印scope.name 2次。第一个在父范围内,第二个在指令中。现在我应该得到2个不同的值。但是,我和两者的范围值相同。 Pl帮忙解释一下!



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

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

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

return{
	template: "{{name}}",
	scope:true
}
controller: [function(){
	$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> 
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

将您的控制器写入DDO。

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

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

这可能会解决您的问题。

答案 1 :(得分:1)

你的控制器没有指令。我把它放在里面并添加了$scope依赖。它有效!

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

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

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

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


});
&#13;
<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> 
&#13;
&#13;
&#13;

答案 2 :(得分:0)

在父控制器中轻松制作一个对象,以便它可以与指令绑定 即var x = {}; x.value = value; //您想要传递然后尝试访问它。