我正在尝试使用jasmine测试一个指令。 指令:
angular.module('app').directive('test',
function(){
return{
restrict: 'A',
scope:{data:'='},
link:function($scope,element,attrs){
.....
$scope.data=[200,300];
}
}
}
]);
茉莉:
describe('test', function(){
beforeEach(module('test'));
beforeEach(inject(function($rootScope,$compile){
scope = $rootScope.$new();
element = '<div test data="{{data}}"></div>';
scope.data = [100,200]
element = $compile(element)(scope);
scope.$digest();
}));
it('is a test',function(){
expect(data).toBe([100,200]);
});
}
当范围使用“=”时,它会传递引用。但是,在运行测试时,会出现语法错误:令牌'数据'是意外的,期望表达式[{{data}}]的第3列为[:]。如果我只用<test data={{data}}></test>
删除测试模板中的div,它就可以了。当我在范围内用“@”替换“=”时它也可以正常工作。谁能给我一些关于如何将引用传递给范围的建议?感谢。
答案 0 :(得分:6)
经过两天的尝试,我终于可以做到了。
describe('test', function(){
beforeEach(module('test'));
beforeEach(inject(function($rootScope,$compile){
$scope = $rootScope.$new();
element = '<div test data="databind"></div>';
$scope.databind = [100,200]
element = $compile(element)($scope);
$scope.$digest();
}));
it('is a test',function(){
tests.......
});
似乎{{}}在这里没有用。通过使用范围,我们可以通过引用传递它。