Angularjs 从ng网格中的ng click调用控制器内部的函数不起作用
我在从Angularjs 从ng网格中的ng click调用控制器内部的函数不起作用,angularjs,angularjs-scope,ng-grid,Angularjs,Angularjs Scope,Ng Grid,我在从ng单击ng网格ng内部调用控制器内部函数(listCtrl)时卡住了 asset.js.coffee app = angular.module('asset',[]).namespace(true) app.controller 'linkCtrl', ['$scope','Restangular','asset.ProcServiceTools',($scope,Restangular,ProcServiceTools) ->
ng单击ng网格ng内部调用控制器内部函数(listCtrl)时卡住了
asset.js.coffee
app = angular.module('asset',[]).namespace(true)
app.controller 'linkCtrl', ['$scope','Restangular','asset.ProcServiceTools',($scope,Restangular,ProcServiceTools) ->
Restangular.all('asset').customGETLIST("linktogroup",{}).then (data) ->
$scope.myData = data
$scope.dynamicColumnDefs =ProcServiceTools.getIndexDynamicColumnDefs(data)
$scope.customoptions = ProcServiceTools.getCustomOptions()
$scope.linking = () ->
console.log("checkout")
]
app.service 'ProcServiceTools', () ->
class Tools
getIndexDynamicColumnDefs: (data) ->
return [
{field: 'id', displayName: 'ID' },
{field: 'asset_group_id', displayName: 'Group_ID' },
{field:'asset_catalog_id', displayName:'Catalog_id' },
{field: 'condition', displayName: 'Condition' },
{field: 'notes', displayName: 'Notes' },
{field: 'status', displayName: 'Status' },
{field: 'current_user_id', displayName: 'Current_user' },
{field: '' , cellTemplate: "<button ng-click='linking()'>Link-to </button>"}]
getCustomOptions: () ->
return {
showGroupPanel: true
jqueryUIDraggable: true
showSelectionCheckbox: true
showFooter: true
selectWithCheckboxOnly: true
enableColumnResize: true
}
new Tools
我不知道为什么我不能从ng grid中的ng clik调用控制器内部的函数。问题是因为我在index.html.erb中包含了用户定义的customgrid指令,它有自己的私有作用域。所以我使用了ng grid本身并触发了该函数
app = angular.module('asset', []).namespace(true);
app.controller('linkCtrl', ['$scope', 'Restangular', function($scope, Restangular) {
$scope.linking = function() {
console.log("check me out");
};
Restangular.all('asset').customGETLIST("linktogroup", {}).then(function(data) {
$scope.myData = data;
});
$scope.gridOptions = {
data: 'myData',
columnDefs: [{field: 'id', displayName: 'ID' },
{field: 'asset_group_id', displayName: 'Group_ID' },
{field:'asset_catalog_id', displayName:'Catalog_id' },
{field: 'condition', displayName: 'Condition' },
{field: 'notes', displayName: 'Notes' },
{field: 'status', displayName: 'Status' },
{field: 'current_user_id', displayName: 'Current_user' },
{cellTemplate:'<button id="editBtn" type="button" class="btn btn-primary" ng-click="linking()" >Edit</button> '}]};
}
]);
app=angular.module('asset',[]).namespace(true);
app.controller('linkCtrl',['$scope','restanglar',function($scope,restanglar){
$scope.linking=函数(){
console.log(“签出我”);
};
Restangular.all('asset').customGETLIST(“linktogroup”,{})。然后(函数(数据){
$scope.myData=数据;
});
$scope.gridOptions={
数据:“myData”,
columnDefs:[{field:'id',displayName:'id'},
{字段:“资产组id”,显示名称:“组id”},
{字段:'asset\u catalog\u id',displayName:'catalog\u id'},
{字段:'条件',显示名称:'条件'},
{字段:'notes',显示名称:'notes'},
{字段:'status',显示名称:'status'},
{字段:'current_user_id',显示名称:'current_user'},
{cellTemplate:'Edit'}]};
}
]);
还有我的index.html.erb
<div ng-controller='asset.linkCtrl'>
<div class="gridStyle" ng-grid="gridOptions"></div>
</div>
让我的东西正常工作:)嘿,你能从控制台发布错误吗?你可能有和我一样的问题,据报道ng grid在层次结构中引入了一个新的作用域,所以你需要调用$scope。$parent,请看@Fasermaler,听起来有点像黑客吗?:S@prasanthv不是真的,这只是ui网格的工作方式。不过我现在还是弄糊涂了,所以谢谢你的提醒。我想应该是grid.appscope。。。愚蠢的范围:)检查@prasanthv,Fasermaler谢谢你的解决方案..我让它工作了..它没有被触发是因为我在我的解决方案中发布了错误!!!!
app = angular.module('asset', []).namespace(true);
app.controller('linkCtrl', ['$scope', 'Restangular', function($scope, Restangular) {
$scope.linking = function() {
console.log("check me out");
};
Restangular.all('asset').customGETLIST("linktogroup", {}).then(function(data) {
$scope.myData = data;
});
$scope.gridOptions = {
data: 'myData',
columnDefs: [{field: 'id', displayName: 'ID' },
{field: 'asset_group_id', displayName: 'Group_ID' },
{field:'asset_catalog_id', displayName:'Catalog_id' },
{field: 'condition', displayName: 'Condition' },
{field: 'notes', displayName: 'Notes' },
{field: 'status', displayName: 'Status' },
{field: 'current_user_id', displayName: 'Current_user' },
{cellTemplate:'<button id="editBtn" type="button" class="btn btn-primary" ng-click="linking()" >Edit</button> '}]};
}
]);
<div ng-controller='asset.linkCtrl'>
<div class="gridStyle" ng-grid="gridOptions"></div>
</div>