javascript - 单击时如何从 Controller 获取数据到指令

标签 javascript angularjs

当我使用 ng-clicked 时,我试图从 Controller 将数据发送到指令链接函数,但是我未能将数据发送到指令,该指令在页面加载时调用第一次

这是我的html代码

 <h2 ng-click="clickMe(somedata)"> click </h2>

    <my-directive my-key="myVal"> </my-directive>

这是我的 Controller

.controller('myController',function($scope){

$scope.clickMe=function(somedata){
$scope.myVal=somedata;
};

});

我的指令

.directive('myDirective',function(){
return{
  restrict:'E',
  scope:{
    myKey:'='
        },
  templateUrl:'exampleTempl.html',
  controller:'myController',
  link:function(scope,elem,attr){
   console.log(scope.myKey); // getting undefined
   console.log(scope.myVal); //here i want the data from controller when i clicked on ng-click
  }
}
});

最佳答案

您可以通过服务 传递数据,也可以为此使用$rootScope,但使用根作用域是不好的做法。所以,使用服务。应该有更多方法可以做到这一点,但服务非常好。

这里是通过服务传递数据的清晰示例:AngularJS Service Passing Data Between Controllers

另一个用于 $rootScope:How to pass an object using $rootScope?

更新:

您还可以通过$scope.$emit$scope.$broadcast 通过parent-child Controller 传递数据,但请记住,这仅适用于父子 Controller 。

但是你可以用 $rootScope 做同样的事情,比如 $rootScope.$emit$rootScope.$broadcast。如果您将使用它, Controller 之间的关系就不再重要了(“兄弟” Controller 也是如此)。

这篇文章应该对你有帮助:https://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/

关于javascript - 单击时如何从 Controller 获取数据到指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41331234/

相关文章:

javascript - 将日期递增到下一个预定义的日期

javascript - Angularjs:ng-repeat 中的 ng-show 表达式 - 如果任何 ng-repeat 表达式的计算结果为真,我可以将标题元素设置为可见吗?

javascript - 如何仅在 AngularJS 中指向相同的单页面应用程序时才显示后退按钮?

javascript - AngularJS 链接 $http get 请求

javascript - Angular 输出装饰器无法正常工作给出错误

javascript - 根据 DOM-inspector,FORM 看起来是空的

javascript - 输入和输出,如何使用它们来遵循 Angular 2 风格指南的命名约定?

javascript - 提示最大长度

javascript - 如何从 angular.element [jqLit​​e] 更改第二/第三等标签的背景

javascript - 如何在angularjs中设置多个条件样式