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>