在角度指令中测试访问控制器

时间:2015-06-19 14:50:45

标签: angularjs controller jasmine karma-runner directive

我需要测试从控制器到指令的方法。

APP.angular.directive('miniCrud', function () {

    return {
        restrict: 'E',
        require:"ngModel",
        scope: {
            miniCrudHeader: '@',
            miniCrudConfig: '=',
            modelValues : "=ngModel"
        },
        templateUrl: 'templates/mini-crud.html',
        controller: ['$scope', 'lodash', 'filterFilter', 
            function($scope, _, filterFilter){

                $scope.vm = {
                    getValue: function(item, index) {
                        var prop = $scope.miniCrudConfig.fields[index].name;
                        return item[prop];
                    }

                // some other methods
                }
            }
        }]
     };
});

我怎样才能访问$ scope.vm.getValue()?

1 个答案:

答案 0 :(得分:0)

我希望你知道如何测试指令。由于您的指令创建了一个隔离范围,因此您必须对angular.element返回的对象使用isolatedScope函数。

在测试中创建html指令元素后,编译它并将其链接到作用域。然后,您可以使用已编译的元素来获取隔离范围

var s = angular.element(compiledAndLinkedDOM).isolatedScope();
s.vm.getValue();