自定义orderBy在AngularJS中没有绝对字符串比较?

时间:2018-10-10 14:15:32

标签: angularjs angularjs-filter

我正在为我的系统构建一个小型CSS美化器,仅在CSS处于特定顺序时才会构建。 这个想法是将CSS转储到textarea中,然后由应用程序生成代码的有序版本。 我设法做到了,但前提是粘贴在textarea中的代码没有属性。

例如:

content
margin
font-size

会工作。

但是如果它是带有属性的正确代码:

content: 'test';
margin: 10px;
font-size: 1em;

那么就不会。

我认为失败的是比较函数只会将字符串视为完整字符串,而不是部分字符串。

这是比较函数和a JS Bin

$scope.customOrder = function (item) {
  switch (item) {
    case 'display':
        return 1;
    case 'flex':
        return 2;
    case 'flex-basis':
        return 3;
    case 'flex-direction':
        return 4;
    ... 
  }
};

关于如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

switch之前,解析属性名称,如下所示:

$scope.customOrder = function (item) {
   var parsedItem = item.substr(0, item.indexOf(':'));
   switch (parsedItem) {
     case 'display':
       return 1;
      case 'flex':
        return 2;
      ...