将字符串传递给ng-click

时间:2014-06-19 13:51:38

标签: angularjs rootscope

我真的想尝试解决这个问题,但到目前为止还没有成功。

观点:

<div class="col-md-4 col-xs-4 col-sm-4">
<div ng-click="action()" class="nav-link">Click me for an action in scope  </div>
</div>

我要做的是基本上将“action()”替换为我从修改rootScope的服务发送的变量。

在服务中:

 $scope.myAction = function() {
     $scope.$broadcast("actionEvent");
  }

我想要实现的目标:

<div class="col-md-4 col-xs-4 col-sm-4">
<div ng-click="myAction()" class="nav-link">Click me for an action in scope  </div>
</div>

但是当我尝试更换它时,ng-click无法识别该动作。文本显示正常,但操作未执行。

知道如何从rootScope添加此操作以便在ng-click中执行吗?

期待您的回答,谢谢!

是的,我尝试过这些选项:

1)angular.js parsing value in ng-click 2)Angular JS ng-click action function as string

1 个答案:

答案 0 :(得分:1)

如果您的函数只需要访问rootScope,则不需要将scope函数放在服务中。只需将rootScope注入控制器即可使用它。

module.controller("myctrl", function($scope, $rootScope){
 $scope.myAction = function() {
     $rootScope.$broadcast("actionEvent");
  };
});

如果您的功能与服务有关,请将该功能作为服务的成员,然后在您的ng-click中使用该服务。

module.service("MyService", function($rootScope){
 this.myAction = function() {
     $rootScope.$broadcast("actionEvent");
     // other stuff
  };
});
控制器中的

module.controller("myctrl", function($scope, MyService){
    $scope.ms = MyService;
});
标记中的

<div ng-click="ms.myAction()" class="nav-link">Click me for an action in scope  </div>

请注意,将$scope注入服务没有意义,它只是没有范围。 $rootScope是不同的,因为它是您的服务可以依赖的另一个服务。另请注意,您不应该$scope.myAction = MyService.myAction这可能会导致意外行为。