2017-01-13 1 views
0

내가 이런 식으로 내 JSP에서 지시어를 시작하려고 : addEditRuleSetCtrl 내 컨트롤러의 외계인각도 : 지침을 시작할 때 삼자를 사용하는 방법?

<query-builder group="addEditRuleSetCtrl.filter.group" fields="{{ addEditRuleSetCtrl.origin }}=='DDE'&&addEditRuleSetCtrl.fieldsDDE||addEditRuleSetCtrl.fieldsATT" ></query-builder> 

. 내가 여기에서 시도하는 논리는 : origin == "DDE"라면, fieldsATT를 사용하여 배열 필드 DDE에서 선택된 필드 값으로 지시문을 시작합니다.

나는 점점 오전 오류 :

Error: [$parse:syntax] Syntax Error: Token '{' invalid key at column 2 of the expression [{{ addEditRuleSetCtrl.origin }}=='DDE'&&addEditRuleSetCtrl.fieldsDDE||addEditRuleSetCtrl.fieldsATT] starting at [{ addEditRuleSetCtrl.origin }}=='DDE'&&addEditRuleSetCtrl.fieldsDDE||addEditRuleSetCtrl.fieldsATT]. 

나는 지시자를 시작하는 삼항 옵션을하고 싶습니다. 어떠한 제안? 여기

AddEditRuleSetApp.directive('queryBuilder', ['$compile', function ($compile)  { 
return { 
    restrict: 'E', 
    scope: { 
     group: '=', 
     fields: '=' 
    }, 

    /*controller: 'AddEditRuleSetModalController', 
    link:function (scope,element, attrs) { 

    },*/ 
    templateUrl: '/queryBuilderDirective.html', 
    compile: function (element, attrs) { 
     var content, directive; 
     content = element.contents().remove(); 
     return function (scope, element, attrs) { 

      //scope.group = '{"group": {"operator": "AND","rules": []}}'; 
      window.alert("Directive: " + JSON.stringify(scope.group)); 

      scope.ruleConditionSetOperators = [ 
       { name: 'AND' }, 
       { name: 'OR' } 
      ]; 

      /*scope.fields = [ 
       { name: 'Firstname' }, 
       { name: 'Lastname' }, 
       { name: 'Birthdate' }, 
       { name: 'City' }, 
       { name: 'Country' } 
      ];*/ 

      scope.ruleConditionOperators = [ 
       { name: '=' }, 
       { name: '<>' }, 
       { name: '<' }, 
       { name: '<=' }, 
       { name: '>' }, 
       { name: '>=' } 
      ]; 

      scope.addCondition = function() { 
       scope.group.rules.push({ 
        condition: '=', 
        field: 'Firstname', 
        data: '' 
       }); 
      }; 

      scope.removeCondition = function (index) { 
       scope.group.rules.splice(index, 1); 
      }; 

      scope.addGroup = function() { 
       scope.group.rules.push({ 
        group: { 
         operator: 'AND', 
         rules: [] 
        } 
       }); 
      }; 

      scope.removeGroup = function() { 
       "group" in scope.$parent && scope.$parent.group.rules.splice(scope.$parent.$index, 1); 
      }; 

      directive || (directive = $compile(content)); 

      element.append(directive(scope, function ($compile) { 
       return $compile; 
      })); 
     } 
    } 
} 
}]); 

내 컨트롤러입니다 :

AddEditRuleSetApp.controller('AddEditRuleSetModalController', [ '$scope', '$rootScope', '$modalInstance','RuleEngineService', 'origin', 'iceField', 
function($scope, $rootScope , $modalInstance, RuleEngineService, origin, iceField) 
{ 
    self.origin = origin; 

    self.fieldsDDE = [ 
      { name: 'FirstnameDDE' }, 
      { name: 'LastnameDDE' }, 
      { name: 'BirthdateDDE' }, 
      { name: 'CityDDE' }, 
      { name: 'CountryDDE' } 
     ]; 

     self.fieldsATT = [ 
      { name: 'FirstnameATT' }, 
      { name: 'LastnameATT' }, 
      { name: 'BirthdateATT' }, 
      { name: 'CityATT' }, 
      { name: 'CountryATT' } 
     ]; 
} 

답변

0

왜 당신이 기능을 사용하지 않는 다음

내 지시인가?

<query-builder group="addEditRuleSetCtrl.filter.group" fields="addEditRuleSetCtrl.getCorrespondingFields()" ></query-builder> 

과 :

self.getCorrespondingFields = function(){ 
    return self.origin == 'DDE' ? self.fieldsDDE : self.fieldsATT; 
}; 
+0

감사합니다. 그것은 떠 다녔다. – Patty

관련 문제