【发布时间】:2015-10-07 20:17:59
【问题描述】:
我正在开发一个使用出色的 jsPlumb 库来创建节点接口的网站。
jsPlumb 有一个事件 'beforeDrop' 在连接两个端点之间的连接之前触发,我想用它来检查条件,然后决定是否允许连接。
如果不允许连接,我想使用 ngToast 向用户显示消息。
这是我的“beforeDrop”功能
jsPlumb.bind('beforeDrop', function(info){
// Check that they property types match
var outNodeType = $('#'+info.sourceId).data( "ptype" );
var inNodeType = $('#'+info.targetId).data( "ptype" );
if(outNodeType !== inNodeType){
showMessage('warning', '<strong>Error:</strong> unable to connect '+outNodeType+' to '+inNodeType)
return false // false for not establishing new connection
}
return true; // true for establishing new connection
});
这是显示 ngToast 消息的函数:
function showMessage(messageType, message){
ngToast.warning({
class: messageType,
content: message
});
}
问题是 ngToast 消息直到我单击页面上的任意位置才出现。单击后,将显示消息并且一切正常。
我不知道这是 jsPlumb 和 angularjs 的问题,还是我调用 ngToast 函数的问题。
我非常感谢有关如何解决此问题的任何建议。蒂亚!
【问题讨论】:
-
尝试运行摘要循环..只要您调用
showMessage方法..因为您正在从角度上下文之外调用角度代码.. -
感谢@Pankaj,我在“return false”之前添加了 $scope.$apply() 并且一切正常!
-
检查..我已经添加了答案
标签: javascript angularjs jsplumb ngtoast