2016-04-05 44 views
-1

我与角料v1.0.7工作的工作,我有MD-芯片麻烦:角材料MD-芯片与MD-自动完成:事件MD-未找到不与MD-转换芯片

在md芯片中,我使用了md-autocomplete(...)。这里是我的情况: - 当用户在md-autocomplete中输入vaue时,如果没有项目,用户可以按Enter创建新芯片。另一种方法是,如果没有物品,则未找到的物品将显示“没有物品,请点击此处添加新物品”。在控制器中,当用户点击文本时,我可以捕捉到事件“没有项目适合,点击此处添加新项目”。但是当我打电话给函数md-transform-chip(我想我的用户点击文本“没有项目适合,点击这里添加新项目”与按回车相同),它不起作用。

这里是codepen:

codepen.io/DieuNQ/pen/oxoNVe?editors=1010 

有什么想法?

感谢

+0

请确保您以其他人了解的方式提问您的问题并不清楚 – Rishab777

+0

您可以打开此代码簿。当您在文本框中输入文本并按下“Enter”时,将会创建一个新芯片。我只是想:当用户在文本框中输入文本,然后单击“未找到。单击此处添加”对话框 - >它将创建一个新的芯片 - 当用户按Enter时 – user1127692

回答

0

这里是一个黑客工具,可能只是为你工作,因为我们正在使用的md-auto-complete我们目前还没有办法告诉md-auto-completemd-not-found元素的点击添加一个chip

hack:通过此指令,我们在窗口上查找click,然后添加一个新项目作为筹码。

.directive('mdChips', function($timeout) { 
    return { 
    restrict: 'E', 
    require: 'mdChips', // Extends the original mdChips directive 
    link: function(scope, element, attributes, mdChipsCtrl) { 

     var mouseUpActions = []; 

     mdChipsCtrl.onInputBlur = function(event) { 
     this.inputHasFocus = false; 

     mouseUpActions.push((function() { 
      var chipBuffer = this.getChipBuffer(); 
      if (chipBuffer != "") { // REQUIRED, OTHERWISE YOU'D GET A BLANK CHIP 
      this.appendChip(chipBuffer); 
      this.resetChipBuffer(); 
      } 
     }).bind(this)); 
     }; 

     window.addEventListener('click', function(event) { 
     while (mouseUpActions.length > 0) { 
      var action = mouseUpActions.splice(0, 1)[0]; 
      $timeout(function() { 
      $timeout(action); 
      }); 
     } 
     }, false); 
    } 
    } 
}) 

这里是Codepen

+0

Hi @ Rishab777:谢谢。有效。只有一个问题:您在文本框中插入 - >单击外侧 - >单击文本,然后将文本添加到新芯片。 我有另一种解决方案:当用户点击对话框没有找到,我们触发事件按下Enter键。看起来这个解决方案更好。但是,我今天尝试过,但没有运气。但我认为它应该工作。 – user1127692

+0

你可以改变一下,做需要的,但我觉得上述指令应符合你的要求。将问题标记为已回答并关闭该问题。 – Rishab777