首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在IE-8中测试时,在复选框选中属性时未触发观察者

在IE-8中测试时,在复选框选中属性时未触发观察者
EN

Stack Overflow用户
提问于 2014-04-01 21:14:25
回答 1查看 583关注 0票数 2

嗨,我亲爱的社区成员。我只有在IE 8中测试如何处理复选框点击事件时才会遇到问题。这是一个JSBIN链接,你可以在这里看到这个问题:http://jsbin.com/jicijilo/1/

抱歉,我不得不将整个mocha适配器和expectjs源代码注入其中,因为显然只有mozilla可以处理像这些https://raw.githubusercontent.com/teddyzeenny/ember-mocha-adapter/master/adapter.js这样的原始源代码。

测试本身非常简单,我有一个问题列表,每个问题都有一个布尔值的active属性。我有一个标题复选框,用于切换所有问题的“活动”属性。然而,在ie8中,当我们使用click helper点击复选框时,观察者似乎没有被触发!下面是测试的核心代码:

代码语言:javascript
复制
    <script>
      //APPLICATION CODE STARTS HERE
        window.AS = Ember.Application.create({
            rootElement: '#ember-testing'
        });
        mocha.setup('bdd');

        Ember.onLoad('Ember.Application', function(Application) {

            Application.initializer({
                name: 'tests',
                initialize: function(container, application) {
                    Ember.testing = true;
                }

            });
        });


        Ember.Test.adapter = Ember.Test.MochaAdapter.create();
        AS.setupForTesting();
        AS.ApplicationAdapter = DS.FixtureAdapter.extend({simulateRemoteResponse: false});
        AS.injectTestHelpers();
        AS.Router.map(function() {
            this.resource('questions', {path: '/'});
        });

        AS.Question = DS.Model.extend({
            name: DS.attr('string'),
            active: DS.attr('boolean')
        });

        AS.Question.FIXTURES = [
            {
                "id": 1,
                "name": "What is your age?",
                "active": false
            },
            {
                "id": 2,
                "name": "What is your name?",
                "active": false
            }
        ];

        AS.QuestionsRoute = Ember.Route.extend({
            model: function(params) {
                return this.get('store').find('question');
            }
        });

        AS.QuestionsController = Ember.ArrayController.extend({
          toggleAll: false,
          onToggleAllChange: function(){
            var toggleAll = this.get("toggleAll");
            this.get('content').forEach(function(question){
              question.set("active", toggleAll);
            });
          }.observes('toggleAll')
        });

        </script>



    <script>

        describe("Testing", function() {


            beforeEach(function() {
                AS.reset();
                visit("/");
            });

            it("test header toggle", function() {

                click($("input[name='toggleAll']")).then(function() {
                    var chkd = $("input[name='toggleAll']")[0].checked;
                    $(".question input").each(function(index, dom){
                      expect(dom.checked).to.be(chkd);
                    });
                });
            });
        });

        $(document).ready(function() {
            mocha.run();
        });

    </script>
</head>
<body>

    <script type="text/x-handlebars" data-template-name="questions">
        <div>{{input type="checkbox" name="toggleAll" checked=toggleAll}} Toggle active</div>  
        {{#each}}
             <div class="question">{{input type="checkbox" checked=active}} {{name}}</div>
        {{/each}}
    </script>

    <div id="mocha"></div>
    <div id="ember-testing" style="border:1px solid #CCC;"></div>
</body>

在ie8中测试失败,但是如果您手动单击复选框,观察者确实会被触发。您的帮助我们将不胜感激。谢谢你,小迪

EN

回答 1

Stack Overflow用户

发布于 2014-04-03 00:37:46

所以结果是在Ember.Checkbox中寻找更改事件,但我猜在测试时,单击事件不会在ie8中触发更改事件,所以我必须这样做才能让我的测试传入ie8:

代码语言:javascript
复制
        it("test header toggle", function() {

            click($("input[name='toggleAll']")).then(function() {
                $("input[name='toggleAll']").trigger("change");//explicitly trigger change event
                var chkd = $("input[name='toggleAll']")[0].checked;
                $(".question input").each(function(index, dom){
                  expect(dom.checked).to.be(chkd);
                });
            });
        });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22787007

复制
相关文章

相似问题

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