gpt4 book ai didi

AngularJS 如何从指令访问 Controller 范围

转载 作者:行者123 更新时间:2023-12-02 03:38:30 24 4
gpt4 key购买 nike

我正在尝试从指令函数访问父 Controller 范围。当我尝试获取 $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) 返回以下输出: enter image description here

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

如何访问 assignmentInfo

最佳答案

事实上,这是因为您尝试打印 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>

关于AngularJS 如何从指令访问 Controller 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49397595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com