javascript - AngularJS : set parent controller $scope variable from child directive

标签 javascript angularjs scope directive

我有一个主 Controller EventCtrl,它在其范围内设置 formData 变量。

此 Controller 有一个 setEventObject 方法,可以覆盖 formData 对象。

我的目的是能够从子指令调用此方法并将新变量值递归地应用于每个范围。

这是 Controller 及其setEventObject函数:

app.controller('EventCtrl', function($scope) {
  $scope.formData = {
    id: 1,
    name: 'tennis lesson'
  }
  $scope.events = [
    {id: 1, name: 'tennis lesson'}, 
    {id: 2, name: 'golf lesson'}, 
    {id: 3, name: 'handball lesson'}
  ];

  this.setEventObject = function(eventId) {
    angular.forEach($scope.events, function(elem) {
      if (elem.id == eventId) {
        $scope.formData = {
          id: elem.id,
          name: elem.name
        };
      }
    });
  }
});

这是关联的Plunkr ,点击链接时,它应该设置表单输入并重置 formData 变量。

感谢您的帮助!

最佳答案

您正在使用 element.bind('click' 来监听单击。这是 jQuery,这些更改位于 Angular 世界之外。您需要告诉 Angular 您的更改。

eventCtrl.setEventObject(scope.event.id); 行替换为

scope.$apply(function () {
    eventCtrl.setEventObject(scope.event.id);
});

我在你的plunker中尝试了上述更改,它按预期工作。

关于javascript - AngularJS : set parent controller $scope variable from child directive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26205293/

相关文章:

javascript - 使用open.window()在新窗口中打开js程序

javascript - 外部 Bootstrap 库的影响不适用于 JS 生成的 html

angularjs - 使用 Visual Studio Code 批量删除 AngularJS 项目中未使用的导入

c++ - 形参1类型不完整错误

c++ - 非静态数据成员和一个定义规则

javascript - 在循环依赖NodeJS中访问module.exports不存在的属性

javascript - 使用 rails 和 turbolinks 运行 facebook pixel

javascript - Express.js 和 Angular - 身份验证和登录 session

angularjs - 从 Azure Blob for Express.js 服务器提供 HTML 文件

c++ - 超出范围的局部变量......我认为