AngularJS如何从指令访问Controller作用域

的jquery404

我正在尝试从指令函数访问父控制器范围。当我尝试获取$scope.$parent的值时,将返回该对象。但是,当我尝试从该对象访问任何变量时,它将返回Undefined

app.controller('myCtrl', function ($scope, $http, $timeout) {

    $scope.init = function(){

        $http.get('url.php').success(function(data){
            $scope.assignmentInfo = data.record;
        });

    };
});


app.directive('getInfo', [function(){
    return {
        restrict: 'A',
        scope:{
            data:'=',
            title: '='
        },
        link:function(scope, elem, attrs){
            scope.$watch('data.visible', function(val){
                // do something

            });
        },
        controller: function($scope) {
            console.log($scope.$parent); // return an object

            console.log($scope.$parent.assignmentInfo); // return undefined


        },
        templateUrl: 'template.html'
    };
}]);

首先console.log($scope.$parent)返回以下输出:在此处输入图片说明

但是$scope.$parent.assignmentInfo回来underfined

我如何进入assignmentInfo

斯拉瓦·乌特西诺夫(Slava Utesinov)

实际上,这是由于您assignmentInfo在尚未分配时尝试打印,因此您应该$watch这样做:

angular.module('app', [])
.controller('ctrl', ['$scope', '$timeout', function($scope, $timeout) {
    $timeout(function() {
      $scope.assignmentInfo = 'some data';
    }, 1000)
}])
 .directive('myDirective', function() {
    return {
      scope: {},
      template: '<div>from directive: {{assignmentInfo}}</div>',
      controller: function($scope) {      
        $scope.$watch(function() {
          return $scope.$parent.assignmentInfo;
        }, function(value) {
          if (value){
            console.log(value);
            $scope.assignmentInfo = value;
          }
        })
      }
    }
})
<script src="//code.angularjs.org/snapshot/angular.min.js"></script>

<div ng-app='app' ng-controller='ctrl'>    
  <my-directive></my-directive>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何访问嵌套指令中的作用域?

如何在AngularJS中的自定义指令*中使用自己的作用域*访问父作用域?

AngularJS 将作用域数据从 App Controller 传递到指令

angularjs控制器访问指令作用域值

AngularJS指令访问相同的作用域对象-避免覆盖

嵌套指令后,如何访问特定的父作用域?

被指令包装后,如何访问其作用域?

Angular指令compile()函数如何访问隔离的作用域?

从指令中的作用域路径访问模型

访问指令内部的作用域属性

访问指令中的作用域变量

访问子指令的作用域参数

AngularJs,从嵌套ng-repeat内的指令访问父作用域

AngularJs 1.6 - 在指令“链接”函数中无法访问父作用域

AngularJS控制器作用域与指令作用域?

重复指令的angularjs作用域函数

AngularJS奇数指令作用域行为

AngularJS How:指令的作用域层次结构

AngularJS指令作用域函数未调用

如何从Chrome扩展名访问angularjs根作用域

AngularJS:如何访问部分或局部作用域方法?

AngularJS如何从指令访问JSON

在ng-repeat指令中进行角度选择:如何访问子作用域?

如何访问作用域函数

在AngularJS中编写指令时,如何确定是否不需要新的作用域,新的子作用域或新的隔离作用域?

如何从AngularJS(没有$ parent)中的多级指令获取控制器作用域

AngularJS:在$ routeProvider中访问作用域变量

在AngularJS中访问作用域变量

AngularJS:动态编译指令模板时正确的作用域绑定