Angularjs 我想在单击按钮时调用自定义指令,并将属性作为参数传递

Angularjs 我想在单击按钮时调用自定义指令,并将属性作为参数传递,angularjs,angularjs-directive,angularjs-scope,angular-directive,Angularjs,Angularjs Directive,Angularjs Scope,Angular Directive,这是html代码 这是我的指令 当我点击按钮时,应该启动get函数并调用指令,但当我点击按钮时,应该设置cols、pagination和“table data”属性。我应该如何实现这一点 给我们看看你的指令。@JoeLloyd我刚才添加了我的指令。我想你需要一个链接函数来监视属性的变化。你能帮我看看吗? <button type="submit" ng-click="get(selected_items)">Genrate</button> <pre&g

这是html代码

这是我的指令


当我点击按钮时,应该启动get函数并调用指令,但当我点击按钮时,应该设置cols、pagination和“table data”属性。我应该如何实现这一点

给我们看看你的指令。@JoeLloyd我刚才添加了我的指令。我想你需要一个链接函数来监视属性的变化。你能帮我看看吗?
<button type="submit" ng-click="get(selected_items)">Genrate</button>    

<pre>selected roles = {{selected_items}}</pre>

<grid table-data="data" cols="columnDefs" sortcols="name" pagination="true" enablefiltering="true" />
 app.directive('grid', function ($compile) {
        return {
            restrict: 'E',
            template: function ($elem, $attr) {
                if ($attr.pagination == "true") {
                    return '<div class="gridStyle" ui-grid="options" ui-grid-pagination></div>';
                }
                else {
                    return '<div class="gridStyle" ui-grid="options" ></div>';
                }
            },
            scope: {},
            compile: function (cElem, cAttrs) {
                return {
                    pre: function (scope, iElement, iAttrs) {
                        scope.options = {};
                        if (iAttrs.pagination == "true") {
                            scope.options = {
                                paginationPageSizes: [6, 10, 20],
                                paginationPageSize: 6
                            };
                        }
                        if (iAttrs.enablefiltering=="true") {
                            scope.options.enableFiltering = true;
                        } 
                        scope.options.columnDefs = scope.$parent.$eval(iAttrs.cols);
                        var array;
                        if (iAttrs.sortcols.indexOf(',') > -1) {
                            array = iAttrs.sortcols.split(',');
                            _.each(scope.options.columnDefs, function (object) {
                                object.enableColumnMenu = false;
                                _.each(array, function (obj) {
                                    if (object.field == obj) {
                                        object.enableSorting = true;
                                    }
                                    else {
                                        if (object.enableSorting = true)
                                            return;
                                        object.enableSorting = false;
                                    }
                                });
                            });
                        }
                        else {                               
                            _.each(scope.options.columnDefs, function (object) {
                                object.enableColumnMenu = false;
                                if (object.field == iAttrs.sortcols) {
                                    object.enableSorting = true;
                                }
                                else {
                                    object.enableSorting = false;
                                }
                            });
                        }                        
                        scope.options.data = iAttrs.tableData;                            
                       scope[iAttrs.tableData] = scope.$parent.$eval(iAttrs.tableData);                        
                    }
                }
            }
        }
    });