角度ng-options不会在IE 11中呈现正确的值

时间:2015-05-08 22:06:19

标签: angularjs html5 coffeescript lodash

我有两个ng-options下拉列表。一个用于显示初级经纪人,另一个用于二级经纪人。 加价如下: -

<div class="col-md-4">
    <div class="form-group">
        <label>Primary Broker: </label>
        <button type="button" class="btn-help" tabindex="-1" data-popover="" data-content="Lead JLL broker for the opportunity">
            <span class="circle-help">?</span>
        </button>
        <select class="form-control"
                ng-options="jllContact.JllUserId as jllContact.Name for jllContact in controller.primaryJllBrokers"
                ng-model="controller.primaryJllContactId"
                id="primaryJllContact" data-field='{"name": "Primary Broker", "attribute": "PrimaryJllContact"}'
                ng-change="controller.setPrimaryJllContact()"
                ng-class="{'req': controller.data.isFieldRequired('PrimaryJllContact'), 'has-error': controller.data.isFieldValid('PrimaryJllContact') == false}"
                ng-disabled="!controller.isEnabled('JllContacts')||!controller.canEditBrokerAllocation()">
            <option value="">Select Primary Broker</option>
        </select>
    </div>
</div>
@* Secondary Broker*@
<div class="col-md-4">
    <div class="form-group">
        <label>Secondary Broker: </label>
        <button type="button" class="btn-help" tabindex="-1" data-popover="" data-content="Secondary JLL broker for the opportunity">
            <span class="circle-help">?</span>
        </button>
        <select class="form-control"
                ng-options="jllContact.JllUserId as jllContact.Name for jllContact in controller.secondaryJllBrokers"
                ng-model="controller.data.SecondaryJllContactId"
                id="secondaryJllContact" data-field='{"name": "Secondary Broker", "attribute": "SecondaryJllContact"}'
                ng-change="controller.handleSecondaryJllContactChange()"
                ng-class="{'req': controller.data.isFieldRequired('SecondaryJllContact'), 'has-error': controller.data.isFieldValid('SecondaryJllContact') == false}"
                ng-disabled="!controller.isEnabled('JllContacts')||!controller.canEditBrokerAllocation()">
        <option value="">Select Secondary Broker</option>
    </select>
</div>

当我更改辅助代理时,如标记中所示,我调用了一个名为的方法 handleSecondaryJllContactChange。方法如下。

handleSecondaryJllContactChange:()=>
    primaryJllContactId = this.primaryJllContactId
    this.refreshPrimaryBrokers((primaryBrokers)=> this.primaryJllContactId = primaryJllContactId)

  refreshPrimaryBrokers:(callback)->
    this.primaryJllBrokers = _.where(this.data.JllContacts, (jllc)=> jllc.Role.ID == 21 && jllc.JllUserId != this.data.SecondaryJllContactId)
    if callback? && callback!= undefined && this.primaryJllBrokers!=null && this.primaryJllBrokers != undefined
      callback(this.primaryJllBrokers)

从代码中可以看出,我们正在为集合controller.primaryJllBrokers刷新后的第一个下拉列表设置ng-model“controller.primaryJllContactId”。

但是,下拉菜单仍显示IE 11中的正确选项。

注意:

  1. 在检查控制台时,我们注意到了第一个ng-model dropdown controller.primaryJllContactId具有正确的值。它只是 在下拉列表中无法正确显示。
  2. 这只发生在IE 11中。它在chrome中完美运行。
  3. 我们尝试了很多事情: -

    1. 在第二个下拉列表中,我们尝试在controller.secondaryJllBrokers上监视,而不是ng-change =“controller.handleSecondaryJllContactChange()” 并调用方法controller.handleSecondaryJllContactChange()。
    2. 我们采取的第二条路线是基于我们在呈现选项之前设置ng-model的假设。因此我们采取了$超时 做法。在上面显示的handleSecondaryJllContactChange()方法中,我们在第二行中执行了此操作: -
    3. this.refreshPrimaryBrokers((primaryBrokers)=&GT;这$超时(=&GT; this.primaryJllContactId = primaryJllContactId))

      这两种方法都不起作用。任何有关为什么会发生这种情况的想法,以及了解选项何时完成呈现的方式。

      先谢谢!!!!

0 个答案:

没有答案