我正在尝试使用jasmine在自定义指令中测试双向绑定。
这是js:
angular.module('MyServiceModule',[]);
angular.module('MyServiceModule').controller('MyController',MyController);
angular.module('MyServiceModule').directive('trainDirective',trainDirective);
function MyController($http)
{
console.log('MyController');
vm = this;
vm.openCreateQuoteScreen = function(trainName)
{
alert("train type"+trainName);
}
vm.trainList = [
{"trainName":"Shatabdi"},
{"trainName":"Rajdhani"}
];
}
function trainDirective()
{
return{
restrict: 'E',
template: '<div>TRAIN LIST</div>'+
'<ul data-ng-repeat="train in trains">'+
'<li>{{ train.trainName }}</li></ul>',
scope: {
trains: '=',
},
};
}这是html:
<div ng-app="MyServiceModule" ng-controller="MyController as MyCtrl" >
<train-directive trains="MyCtrl.trainList"> </train-directive>
</div>如何在下面的测试中编写测试双向数据绑定:
describe('my directive', function(){
beforeEach(module('MyServiceModule'));
beforeEach(function(){
element=angular.element('<train-directive trains="MyCtrl.trainList"> </train-directive>');
compiledElement = $compile(element)(scope);
scope.$digest();
});
});
it('should test two-way data binding',function(){
element.isolateScope().trains = "My trains";
//Now I want to test if the same value is reflected in the parent scope's trainList variable.
expect(scope.trainList).toEqual('My trains');
});我在这里做错了什么?有没有人能解释一下我该怎么纠正它?
发布于 2016-06-30 15:33:32
绑定不会神奇地更新,它们是在摘要上更新的。应该将MyCtrl.trainList更改为trainList,因为scope不属于具有controllerAs语法的实际控制器,并且没有MyCtrl对象。
它应该是
element.isolateScope().trains = "My trains";
scope.$digest();
...https://stackoverflow.com/questions/38115739
复制相似问题