我在模板中有两个ng-include
,但类似:
<ng-include ng-controller="ctrTable" src="modal.html"></ng-include>
<ng-include ng-controller="ctrButton" src="modal2.html"></ng-include>
我需要刷新控制器ctrTable
中的表格表,但按钮位于控制器中,并在控制器tableService
中调用服务ctrButton
的函数,表格为指令
ctrTable.js
$scope.jqconfig = {
url:Metronic.getAJAXURL() + "/ajax/getNames",
datatype: "json",
colNames:[
'id',
'Name'
],
width: null,
shrinkToFit: false,
colModel:[
{name:'name',index:'name',autowidth: true,shrinkToFit: true},{name:'id',index:'id',autowidth: true,shrinkToFit: true}
],
sortname: 'id',
};
ctrButton.js
$scope.refresht = function(){ $tableService.refresh();}
modal.html
<ng-jqgrid config="jqconfig" addnew="true" modeldata="patientdata" gridid="patientgrid" pagerid="patientpager" api="gridapi"></ng-jqgrid>
modal2.html
<input type="button" ng-click="refresht()" />
directive.js
Handelbay.directive('ngJqgrid',[ '$window', function ($window) {
return {
restrict: 'E',
replace: true,
scope: {
config: '=',
api: '=?',
},
link: function (scope, element, attrs) {
var table, div;
scope.$watch('config', function (value) {
table.jqGrid(value);
scope.api = {
refresh: function () {
table
.jqGrid('clearGridData')
.jqGrid('setGridParam', { data: scope.modeldata })
.trigger('reloadGrid');
}
};
});
}
}; }]);
TableService.js
Handelbay.factory("$tableService", ['$rootScope','$http',function($rootScope,$http) {
return { refresh: function(){ /* refresh ??? */ } } }]);