灰色按钮不会保持禁用状态

时间:2014-07-21 23:14:13

标签: ember.js

我有一个余烬表单,其中按钮应该被禁用以创建对象。我做的前两种形式工作得很好,这个给我带来了问题。该按钮被禁用,但在控制器操作完成之前可以重新设置。

目标:防止双击“创建”按钮以创建重复对象 我尝试通过在第一次单击

后禁用按钮来执行此操作

查看(只是按钮片段)

<button type="submit" class="btn btn-primary" type="submit" id="submit-attribute"{{action 'submit' newAttribute}} {{bind-attr disabled="isProcessing"}}>Create</button>

控制器(在CoffeeScript中)

App.SpecificationNewAttributeController = Ember.ObjectController.extend
  isProcessing: false
  newAttribute: Ember.Object.create({
    name: ""
    datatype: ""
    group: ""
  })
  datatypes: ['number', 'range', 'list', 'boolean', 'date']

  actions:
    submit: (content) ->
      @set "isProcessing", true
      specification = controller.get('content')

      specId = specification.get('identifier')
      revision = specification.get('revision')
      specificationAttribute = @store.createRecord "SpecificationAttribute",
        name: content.name
        group: content.group
        datatype: content.datatype
        specification: specification
        specificationIdentifier: specId
        revision: revision

      specificationAttribute.save().then ((specificationAttribute) =>
        attributeId = specificationAttribute.get("id")

        specification.get('specificationAttributes').addObject specificationAttribute
        specification.save().then ((specification) =>
          specification.reload()

          groups = specification.get('specificationGroups')
          group = groups.where(display_name: content.group)[0]

          controller.transitionToRoute('specification', specification).then ->
            $.growl.notice title: "Specification", message: "New Attribute Added"
        )
        @set "isProcessing", false
      )

1 个答案:

答案 0 :(得分:0)

自己回答这个问题。这是一个蹩脚的错误,但也许它会帮助某人。我需要将@set "isProcessing", false移动到内部save().then块中:

  actions:
    submit: (content) ->
      @set "isProcessing", true
      controller = @controllerFor('specification')
      specification = controller.get('content')

      specId = specification.get('identifier')
      revision = specification.get('revision')
      specificationAttribute = @store.createRecord "SpecificationAttribute",
        name: content.name
        group: content.group
        datatype: content.datatype
        specification: specification
        specificationIdentifier: specId
        revision: revision

      specificationAttribute.save().then ((specificationAttribute) =>
        attributeId = specificationAttribute.get("id")

        specification.get('specificationAttributes').addObject specificationAttribute
        specification.save().then ((specification) =>
          specification.reload()

          groups = specification.get('specificationGroups')
          group = groups.where(display_name: content.group)[0]

          @set "isProcessing", false

          controller.transitionToRoute('specification', specification).then ->
            $.growl.notice title: "Specification", message: "New Attribute Added"
        )
      )