在 angular.js 中,指令控制器可以访问加载它的页面控制器中的数据吗?
/**
* Profile directive
*/
.directive('profile', function () {
return {
restrict: 'E',
replace: true,
templateUrl: '/partials/users/_profile.html',
scope: {
user: '=',
show: '=?'
},
controller: function($scope, $rootScope){
$scope.show = angular.isDefined($scope.show) ? $scope.show : { follow: true, link: true };
$scope.currentUser = $rootScope.currentUser;
//do stuff here and then set data in UserShowCtrl
}
};
});
使用 UserShowCtrl 控制器调用该<profile user="user"></profile>
方法。./users/show.html
无论如何我可以在 profile 指令上使用范围和它自己的控制器,并且仍然能够将数据传递给 UserShowCtrl?
即使配置文件可以独立于它自己的功能,它仍然需要在 UserShowCtrl 控制器中的页面级别上设置一些数据。
这是 _user.html 加载<profile>
指令的地方。页面的数据由 提供,UserShowCtrl
并且有一些集合会在事情发生时更新,例如关注用户。
<ol class="following" ng-show="showConnections == 'following'">
<li ng-repeat="following in user.following">
<profile user="connections[following]"></profile>
</li>
</ol>
现在ng-click="follow(user)">
在 _profile.html 中发生了一件事情。我希望能够让指令处理这个问题,但也可以更新 UserShowCtrl 中的集合。
编辑:这是一个展示我正在尝试做的事情的 plunker: