角度材料设计 - 使用自动完成创建新芯片

时间:2016-06-21 03:24:39

标签: angularjs material-design

我正在使用Angular Material Design。我有一个包含自动完成术语集的字段。这个列表是通过api电话提取的。

但是,如果用户决定创建一个新标题(芯片),我使用md-transform-chip =" vm.transformChip($ chip)"。

现在,当找到新芯片时,我想通过api调用创建作业标题,然后返回响应并将其作为新芯片。

但是,我发现,如果我进行api通话并成功回调,则返回芯片,它总是一个空芯片。如果我没有拨打api电话并返回新芯片,它就会正确显示。

实施例。它不起作用:

function transformChip(chip) {
  // If it is an object, it's already a known chip
  if (angular.isObject(chip)) {
   return chip;
  }

  api.jobTitles.create.save({'site_id': vm.site_id}, { name: chip },
    // Success
    function (response) {
      vm.jobTitles.push(response);
      return { name: response.name, _id: response._id}                          
    },

    // Error
    function (response) {
    }
  );
}

实施例。从Angular Material Design的网站上撤下来,它可以在那里运作。

function transformChip(chip) {
  // If it is an object, it's already a known chip
  if (angular.isObject(chip)) {
    return chip;
  }

  return { name: chip, type: 'new' }   
}

我的目标是在提交表单之前创建新芯片,并将新芯片添加到作业标题数组中,这样,任何新提交的内容都将具有用于预先输入的芯片。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在推送新作业标题后,您只需返回null 。 您可能希望放置一些加载元素来禁用输入,直到请求结束,因为如果请求需要时间,用户将看到任何内容,直到它结束。我宁愿只是禁用输入,直到请求结束并且元素已成功推送到范围内。

如果您检查文档中的属性表,那么

https://material.angularjs.org/latest/api/directive/mdChips