如何形成一串自定义表达式/条件?

时间:2016-02-10 19:33:53

标签: angularjs algorithm sorting conditional-statements grammar

我有一个存储差异条件的数组

$scope.conditions = ['a>12', 'b<13', 'NOT a', 'NOT b'];

我想允许用户使用ANDOR运算符/按钮在给定条件下创建自己的表达式。

因此用户可以形成自己的表达式,例如

 (a>12 AND b < 13) OR NOT a 
 a>12 AND (b<13 AND NOT a)

我该怎么做?有谁能指出我这样做的正确方向?

谢谢!

2 个答案:

答案 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'
  }
});