从组件调用控制器的函数 [英] Call a controller's function from component

查看:28
本文介绍了从组件调用控制器的函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从组件调用控制器的功能.这是我的文件:

controller.js:

$scope.dataTableDevices = {标题:'标题',颜色:{'背景':'rgb(31, 119, 180)'},项目:[0, 1, 2]};$scope.hacerClick = function(){警报(它有效");}

view.html:

<device-categories data="dataTableDevices"></device-categories>

deviceCategories.js:

function deviceCategoriesController() {}widgetsFactory.component('deviceCategories', {templateUrl: 'app/common/js/components/deviceCategories/deviceCategories.html',控制器:设备类别控制器,绑定:{数据:'='}});

deviceCategories.html:

点击</md-button>

解决方案

组件就像具有独立作用域的指令.

如果您想调用父作用域/控制器作用域中的函数,请执行以下操作

考虑在您的控制器中使用以下方法:

angular.module('MyApp').controller('AppController', function ($scope) {$scope.validateInputByUser = 函数(对象){如果 (obj['note'].length > 255) {返回假;}返回真;};});

  1. 创建组件

    angular.module('MyApp').component('注释', {templateUrl: "/Templates/Notes.html",控制器为:'模型',控制器:NotesController,绑定:{注意:'='}});

  2. 使用 $scope 注入创建一个名为NotesController"的控制器,因为组件是控制器的子级,控制器范围"在组件中可以作为 $parent 访问.

    function NotesController ($scope) {//将父方法绑定到当前组件的作用域$scope.validateInputByUser = $scope.$parent.validateInputByUser;};

  3. 现在,您可以通过以下方式实现和访问控制器方法:

    笔记模板 (/Templates/Notes.html) 上的 Html 看起来像