同一状态下另一个模板中的访问范围

access scope in another template in same state

如何在相同状态的另一个模板中访问 $scope? 在我下面的代码中,我想从(通过使用)chart.html

访问控制器网格中的函数
        .state('demo.content', {
            url: '',
            views: {
                'chart': {
                    templateUrl: './App/chart.html',
                    controller: 'Chart'
                },
                'grid': {
                    templateUrl: './App/grid.html',
                    controller: 'Grid'
                }
        })

我建议不要直接调用另一个作用域中的函数。我建议使用 $broadcast 和 $on 机制,其中一个控制器广播另一个控制器可以订阅的消息。

这是一个例子:

var app = angular.module('myapp', []);
app.controller('controller1', ['$scope', '$rootScope', function ($scope, $rootScope) {
    $scope.notify = function () {
        $rootScope.$broadcast('click', 'heres the message');
    };
}]).controller('controller2', ['$scope', '$rootScope', function ($scope, $rootScope) {
    $scope.$on('click', function (event, data) {
        $scope.message = data;
    });
}]);

完整 fiddle 此处:http://jsfiddle.net/6dbgo6pt/2/ .

文档在这里:https://docs.angularjs.org/api/ng/type/$rootScope.Scope

有实际函数绑定(“&”绑定)之类的东西,但那是在指令中。假设你会有这样的东西:

<div ng-controller='mycontroller'>
    <div my-button-directive clickcallback='doSomething' />
</div>

然后在您的 my-button-directive 中,您可以在 clickcallback 属性上使用“&”绑定。这将允许您从指令中调用 mycontroller 范围内的 doSomething()。但是就像我说的,我不认为这种情况适用于你。

当范围是 isolated.That 时,访问另一个范围并不好 style.Especially 这就是我建议您使用 AngularJs 事件的原因。