使用$ on的函数调用不能来自$ scope

时间:2016-03-22 18:38:15

标签: angularjs

我正在使用普通的$ rootScope。$ broadcast将控制转移到另一个控制器。另一个控制器正在尝试基于此调用函数。问题是这个函数可以被称为$ scope函数,或者它始终是控制器中的私有函数。所以当我写下面的内容时:

 <div class="row" style="height:300px;">
    <div class="col-md-3">
        <div class="thumbnail">
            <a href="@(Url.Content("~/ProjectTimer/LITL.DesktopTimer.application"))" >
            </a>
            <div class="caption" style="height:300px;">
                <p>Run the Timer App on your computer to keep track of your time.</p>
                <a class="btn btn-primary" href="@(Url.Content("~/ProjectTimer/LITL.DesktopTimer.application"))">
                    <span class="glyphicon glyphicon-download"></span>&nbsp;Download
                </a>
            </div>
        </div>
    </div>
    <div class="col-md-9" style="height:300px; background: #f0e68c">
        <div class="thumbnail" style="width:100%; height:300px">
            <a class="btn btn-block btn-primary" style="display: block; width: 100%; height:100%; font-size:large" href="@(Url.Content("~/ProjectTimer/LITL.DesktopTimer.application"))">
                <span class="glyphicon glyphicon-share" style="font-size: 300px;">LIRA</span>
            </a>
        </div>
    </div>
</div>

它按预期工作。但是当我写道:

  $scope.$on('aRequest',function(){console.log('it works')});

它不起作用。我也没有在控制台中看到语法错误。我错过了什么吗?

喜欢添加,当这个调用如下所示,它也有效:

 $scope.$on('aRequest',$scope.someFunction());

1 个答案:

答案 0 :(得分:6)

只需在没有$scope.$on('toggleNavRequest',$scope.someFunction);的情况下编写() - 您正在传递对函数的引用,而不是实际触发它(Angular将触发函数调用)

示例:

$scope.someFunction = function() {
    console.log("Hi");
};

$scope.$on('toggleNavRequest',$scope.someFunction);