首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以使用jasmine在指令中测试scope.trains的双向绑定吗?

可以使用jasmine在指令中测试scope.trains的双向绑定吗?
EN

Stack Overflow用户
提问于 2016-06-30 14:45:46
回答 1查看 455关注 0票数 1

我正在尝试使用jasmine在自定义指令中测试双向绑定。

这是js:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<div ng-app="MyServiceModule" ng-controller="MyController as MyCtrl" >
     <train-directive trains="MyCtrl.trainList"> </train-directive>
</div>

如何在下面的测试中编写测试双向数据绑定:

代码语言:javascript
复制
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');

    });

我在这里做错了什么?有没有人能解释一下我该怎么纠正它?

EN

回答 1

Stack Overflow用户

发布于 2016-06-30 15:33:32

绑定不会神奇地更新,它们是在摘要上更新的。应该将MyCtrl.trainList更改为trainList,因为scope不属于具有controllerAs语法的实际控制器,并且没有MyCtrl对象。

它应该是

代码语言:javascript
复制
   element.isolateScope().trains = "My trains";
   scope.$digest();
   ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38115739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档