angularjs使用service并在当前函数之外设置$ scope变量

时间:2015-12-18 12:03:20

标签: angularjs angularjs-directive

我有一个负责创建网格的指令:

    app.directive('gridControl', function () {
    return {
        restrict: 'E',
        scope: {
            objectType: "=objecttype",
            gridFields: "=gridfields"
        },
        templateUrl: '/app/templates/modules/gridControl.html',
        controller: 'gridControlController'
    };
  });

控制器如下所示:

standardApp.controller('gridControlController', ["$scope", "$stateParams", "gridControlService",
function gridformController($scope, $stateParams, gridControlService) {
    var fields = [];
    gridControlService.getGridStructure($stateParams.id).then(function (result) {
        fields = result.data.Fields;
    });
    $scope.mainGridOptions = fields;
}]);

当我想在我的视图中操作$ scope.mainGridOptions时它是空的!任何人都可以帮我解决这个问题吗?
*注意:我想将字段数组提供给当时函数之外的$ scope.mainGridOptions。

1 个答案:

答案 0 :(得分:0)

原因是关于gridControlService.getGridStructure($..的{​​{1}}。因此,asynchronous永远不会保持,直到完成js事件,它将执行脚本的其余部分。因此asynchronous将在$scope.mainGridOptions = fields;之前执行,这意味着.then(function (result)只是一个空数组。

我认为fields没有必要,你有更好的方法来实现这一点。尝试如下

$scope.mainGridOptions = fields;