我有一个存储差异条件的数组
$scope.conditions = ['a>12', 'b<13', 'NOT a', 'NOT b'];
我想允许用户使用AND
或OR
运算符/按钮在给定条件下创建自己的表达式。
因此用户可以形成自己的表达式,例如
(a>12 AND b < 13) OR NOT a
a>12 AND (b<13 AND NOT a)
我该怎么做?有谁能指出我这样做的正确方向?
谢谢!
答案 0 :(得分:0)
eval()函数将帮助您将字符串转换为Javascript表达式,您只需根据用户选择(和/或)对条件进行分组。
答案 1 :(得分:0)
以下是让您入门的内容:https://jsfiddle.net/nuettt29/3/
您可以看到使用dragula可以创建类似银行的功能,允许用户拖入元素。
var choices = [' a>12 ', ' b<13 ', ' NOT a ', ' NOT b '];
var connections = [' AND ', ' OR '];
choices.forEach(function(choice) {
var li = document.createElement('li');
li.appendChild(document.createTextNode(choice));
document.getElementById('bank').appendChild(li);
});
connections.forEach(function(connection) {
var li = document.createElement('li');
li.appendChild(document.createTextNode(connection));
document.getElementById('bank').appendChild(li);
});
dragula([document.getElementById('bank'), document.getElementById('userInput')], {
copy: function (el, source) {
return source.id == 'bank'
},
accepts: function (el, target) {
return target.id !== 'bank'
}
});