Angularjs 如何在角度数据表中单击按钮动态创建数据表?
我目前正在我的项目中使用angular data table&我希望通过从第一个表单字段获取输入并单击第一个表单的submit按钮,在第二个表单中动态创建一个数据表Angularjs 如何在角度数据表中单击按钮动态创建数据表?,angularjs,angularjs-scope,jquery-datatables,Angularjs,Angularjs Scope,Jquery Datatables,我目前正在我的项目中使用angular data table&我希望通过从第一个表单字段获取输入并单击第一个表单的submit按钮,在第二个表单中动态创建一个数据表 目前我有两个控制器。每个表单一个控制器。我能够在第一个控制器中使用$scope.$broadcast广播我的第一个表单提交,并且能够在第二个控制器中捕获广播事件。但不知何故,如果不在第二个控制器的开头初始化数据表,我就无法在第二个控制器中创建数据表。我的意思是,当我的页面加载时,我必须在第二个控制器中创建数据表,并在提交第一个表单时
目前我有两个控制器。每个表单一个控制器。我能够在第一个控制器中使用$scope.$broadcast广播我的第一个表单提交,并且能够在第二个控制器中捕获广播事件。但不知何故,如果不在第二个控制器的开头初始化数据表,我就无法在第二个控制器中创建数据表。我的意思是,当我的页面加载时,我必须在第二个控制器中创建数据表,并在提交第一个表单时执行dtInstance.rerender。但我不想在页面加载时创建数据表。事实上,我只想在用户在第一个表单中输入一些数据并提交点击事件时创建它。使用ng if指令。将dataTable指令包装在ng if指令内。dataTable指令仅在条件通过时执行
<div ng-if="FirstFormSubmitted" > <dataTable></dataTable> </div>
与其使用$scope.$broadcast,不如让两个控制器都执行指令?让第一个form指令在隔离范围上将您需要的任何属性或对象传递给第二个指令/控制器,然后第二个指令可以根据传递的值动态更改
一个简单的例子:
(function() {
function DataTable2() {
return {
restrict: 'E',
replace: true,
templateUrl: 'data-table-2.html',
controller: 'DataTable2Ctrl',
controllerAs: 'ctrl',
bindToController: true,
scope: {
data: '='
}
};
}
angular.module( 'myApp' ).directive( 'DataTable2', DataTable2);
})();
然后HTML看起来像
<data-table-1 data="ctrl.whatever"></data-table-1>
<data-table-2 data="ctrl.whatever"></data-table-2>
这样做可以让您只来回传递您需要的内容,而不会弄脏宝贵的$scope广播