【问题标题】:Scope true in directive giving wrong result指令中的范围为真,给出错误的结果
【发布时间】:2016-12-19 08:40:41
【问题描述】:

我在指令中将作用域用作“真”。所以现在,这个指令范围从父级传递到子级,但不是反向的。我现在正在打印 scope.name 2 次。第一个在父范围内,第二个在指令中。现在我应该得到 2 个不同的值。但是,我对两者都获得了相同的范围值。请帮忙解释一下!

//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> 

【问题讨论】:

    标签: javascript angularjs angularjs-scope angular2-directives


    【解决方案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{
    	template: "{{name}}",
    	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> 

    【讨论】:

    • 运行完美!谢谢。
    • @Deadpool 如果觉得有帮助请采纳答案
    • 还有时间。
    【解决方案2】:

    在 DDO 中编写您的控制器。

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

    或许,这会解决你的问题。

    【讨论】:

    • 顺便说一句,您还需要将 $scope 注入指令控制器,否则会出错。另外,DDO 的完整形式是什么?
    • @Deadpool,谢谢,我忘了。
    • @Deadpool "指令定义对象"
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-09-03
      • 2018-01-31
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      相关资源
      最近更新 更多