2014-10-22 4 views
1

지시문에서 새로운 범위 변수를 작성하려고합니다. 내 JSON 데이터의 단순화 된 버전으로 구성됩니다. HTML에서 복잡한 JSON 객체를 처리하지 않으려 고하므로 지시어로만 알려진 JSON 데이터 구조를 만들려고합니다.지시어 범위에 새 변수를 작성하십시오.

알고 싶습니다. 어떻게 새로운 브랜드 변수를 만들 수 있습니까?

나는 이것을 시도하고 Angularjs는 콘솔에 많은 오류를 던졌습니다. 나는 그것에 대해 불평하는 것이 정확히 무엇인지 모른다.

angularApp.directive('viewPersonData', function() { 
    return { 
     restrict: 'E', 
     replace: true, 
     scope: { 
      addressData: '=', 
      professionalData: '=', 
      creditData: '=', 
     }, 
     templateUrl: 'viewPersonData.html', 
     link: linker 
    }; 

function linker(scope, element, attrs) { 

scope.showData= function() { 
       if(something) 
       { 

       //defining a new scope variable 
       scope.employees = []; 

       var firstname = "John"; 
       var lastname = "Smith"; 
       var employee = { 
        "firstname": firstname, 
        "lastname": lastname 
       } 

       scope.employees.push(employee); 

       return true; 
       } 

     } 
} 

}); 

HTML 템플릿 (viewPersonData.html)이 아래 코드를 통해 직원 데이터를 검색하더라도.

<tbody ng-repeat="employee in employees"> 
       <tr> 
        <td class="alnLt b" >{{employee.firstname}}</td> 

        <td class="alnLt b">{{employee.lastname}}</td> 
       </tr> 
       </tbody> 

나는 콘솔에 다음과 같은 오류를 참조하십시오

Error: 10 $digest() iterations reached. Aborting! 
Watchers fired in the last 5 iterations: [["fn: $watchCollectionWatch; newVal: 8; oldVal: 7","fn: function (context) {\r\n   try {\r\n   for(var i = 0, ii = length, part; i<ii; i++) {\r\n    if (typeof (part = parts[i]) == 'function') {\r\n    part = part(context);\r\n    if (part == null || part == undefined) {\r\n     part = '';\r\n    } else if (typeof part != 'string') {\r\n     part = toJson(part);\r\n    }\r\n    }\r\n    concat[i] = part;\r\n   }\r\n   return concat.join('');\r\n   }\r\n   catch(err) {\r\n   var newErr = new Error('Error while interpolating: ' + text + '\\n' + err.toString());\r\n   $exceptionHandler(newErr);\r\n   }\r\n  }; newVal: \"John\"; oldVal: undefined","fn: function (context) {\r\n   try {\r\n   for(var i = 0, ii = length, part; i<ii; i++) {\r\n    if (typeof (part = parts[i]) == 'function') {\r\n    part = part(context);\r\n    if (part == null || part == undefined) {\r\n     part = '';\r\n    } else if (typeof part != 'string') {\r\n     part = toJson(part);\r\n    }\r\n    }\r\n    concat[i] = part;\r\n   }\r\n   return concat.join('');\r\n   }\r\n   catch(err) {\r\n   var newErr = new Error('Error while interpolating: ' + text + '\\n' + err.toString());\r\n   $exceptionHandler(newErr);\r\n   }\r\n  }; newVal: \"Smith\"; oldVal: undefined"],["fn: $watchCollectionWatch; newVal: 9; oldVal: 8","fn: function (context) {\r\n   try {\r\n   for(var i = 0, ii = length, part; i<ii; i++) {\r\n    if (typeof (part = parts[i]) == 'function') {\r\n    part = part(context);\r\n    if (part == null || part == undefined) {\r\n     part = '';\r\n    } else if (typeof part != 'string') {\r\n     part = toJson(part);\r\n    }\r\n    }\r\n    concat[i] = part;\r\n   }\r\n   return concat.join('');\r\n   }\r\n   catch(err) {\r\n   var newErr = new Error('Error while interpolating: ' + text + '\\n' + err.toString());\r\n   $exceptionHandler(newErr);\r\n   }\r\n  }; newVal: \"John\"; oldVal: undefined","fn: function (context) {\r\n   try {\r\n   for(var i = 0, ii = length, part; i<ii; i++) {\r\n    if (typeof (part = parts[i]) == 'function') {\r\n    part = part(context);\r\n    if (part == null || part == undefined) {\r\n     part = '';\r\n    } else if (typeof part != 'string') {\r\n     part = toJson(part);\r\n    }\r\n    }\r\n    concat[i] = part;\r\n   }\r\n   return concat.join('');\r\n   }\r\n   catch(err) {\r\n   var newErr = new Error('Error while interpolating: ' + text + '\\n' + err.toString());\r\n   $exceptionHandler(newErr);\r\n   }\r\n  }; newVal: \"Smith\"; oldVal: undefined"],["fn: $watchCollectionWatch; newVal: 10; oldVal: 9","fn: function (context) {\r\n   try {\r\n   for(var i = 0, ii = length, part; i<ii; i++) {\r\n    if (typeof (part = parts[i]) == 'function') {\r\n    part = part(context);\r\n    if (part == null || part == undefined) {\r\n     part = '';\r\n    } else if (typeof part != 'string') {\r\n     part = toJson(part);\r\n    }\r\n    }\r\n    concat[i] = part;\r\n   }\r\n   return concat.join('');\r\n   }\r\n   catch(err) {\r\n   var newErr = new Error('Error while interpolating: ' + text + '\\n' + err.toString());\r\n   $exceptionHandler(newErr);\r\n   }\r\n  }; newVal: \"John\"; oldVal: undefined","fn: function (context) {\r\n   try {\r\n   for(var i = 0, ii = length, part; i<ii; i++) {\r\n    if (typeof (part = parts[i]) == 'function') {\r\n    part = part(context);\r\n    if (part == null || part == undefined) {\r\n     part = '';\r\n    } else if (typeof part != 'string') {\r\n     part = toJson(part);\r\n    }\r\n    }\r\n    concat[i] = part;\r\n   }\r\n   return concat.join('');\r\n   }\r\n   catch(err) {\r\n   var newErr = new Error('Error while interpolating: ' + text + '\\n' + err.toString());\r\n   $exceptionHandler(newErr);\r\n   }\r\n  }; newVal: \"Smith\"; oldVal: undefined"],["fn: $watchCollectionWatch; newVal: 11; oldVal: 10","fn: function (context) {\r\n   try {\r\n   for(var i = 0, ii = length, part; i<ii; i++) {\r\n    if (typeof (part = parts[i]) == 'function') {\r\n    part = part(context);\r\n    if (part == null || part == undefined) {\r\n     part = '';\r\n    } else if (typeof part != 'string') {\r\n     part = toJson(part);\r\n    }\r\n    }\r\n    concat[i] = part;\r\n   }\r\n   return concat.join('');\r\n   }\r\n   catch(err) {\r\n   var newErr = new Error('Error while interpolating: ' + text + '\\n' + err.toString());\r\n   $exceptionHandler(newErr);\r\n   }\r\n  }; newVal: \"John\"; oldVal: undefined","fn: function (context) {\r\n   try {\r\n   for(var i = 0, ii = length, part; i<ii; i++) {\r\n    if (typeof (part = parts[i]) == 'function') {\r\n    part = part(context);\r\n    if (part == null || part == undefined) {\r\n     part = '';\r\n    } else if (typeof part != 'string') {\r\n     part = toJson(part);\r\n    }\r\n    }\r\n    concat[i] = part;\r\n   }\r\n   return concat.join('');\r\n   }\r\n   catch(err) {\r\n   var newErr = new Error('Error while interpolating: ' + text + '\\n' + err.toString());\r\n   $exceptionHandler(newErr);\r\n   }\r\n  }; newVal: \"Smith\"; oldVal: undefined"],["fn: $watchCollectionWatch; newVal: 12; oldVal: 11","fn: function (context) {\r\n   try {\r\n   for(var i = 0, ii = length, part; i<ii; i++) {\r\n    if (typeof (part = parts[i]) == 'function') {\r\n    part = part(context);\r\n    if (part == null || part == undefined) {\r\n     part = '';\r\n    } else if (typeof part != 'string') {\r\n     part = toJson(part);\r\n    }\r\n    }\r\n    concat[i] = part;\r\n   }\r\n   return concat.join('');\r\n   }\r\n   catch(err) {\r\n   var newErr = new Error('Error while interpolating: ' + text + '\\n' + err.toString());\r\n   $exceptionHandler(newErr);\r\n   }\r\n  }; newVal: \"John\"; oldVal: undefined","fn: function (context) {\r\n   try {\r\n   for(var i = 0, ii = length, part; i<ii; i++) {\r\n    if (typeof (part = parts[i]) == 'function') {\r\n    part = part(context);\r\n    if (part == null || part == undefined) {\r\n     part = '';\r\n    } else if (typeof part != 'string') {\r\n     part = toJson(part);\r\n    }\r\n    }\r\n    concat[i] = part;\r\n   }\r\n   return concat.join('');\r\n   }\r\n   catch(err) {\r\n   var newErr = new Error('Error while interpolating: ' + text + '\\n' + err.toString());\r\n   $exceptionHandler(newErr);\r\n   }\r\n  }; newVal: \"Smith\"; oldVal: undefined"]] 
    at Error (native) 
    at Object.Scope.$digest (angular.js:8841:61) 
    at Object.Scope.$apply (angular.js:9012:24) 
    at done (angular.js:10265:45) 
    at completeRequest (angular.js:10449:7) 
    at XMLHttpRequest.xhr.onreadystatechange (angular.js:10404:11) 
+0

오류를 게시하십시오. –

+0

"새로운 브랜드 변수"란 무엇입니까? 이미 분리 된 범위를 작성 중이므로 지시문에서 매개 변수에 액세스해야합니다. 하지만 이해가 안되는 문제가있는 것 같습니다. – PzYon

+0

@CarlosPliego : 오류로 업데이트되었습니다. – greengrassbluesky

답변

2

링커 제거 및 지침의 컨트롤러 속성을 사용하기,

controller: function($scope){ 
    $scope.employees = [{ 
       "firstname": firstname, 
       "lastname": lastname 
    }]; 
} 

이 직원 데이터 구조를 만듭니다.

+0

컨트롤러 속성을 추가 한 후에 위의 오류가 발생합니다. 그러나 데이터는 표시되지 않습니다. 아래는 변경 내용입니다. ---> controller : function ($ scope) { $ scope.employees = [{}]; var firstname = "John"; var lastname = "Smith"; VAR 직원은 = $의 scope.employees.push (직원) { "FIRSTNAME": FIRSTNAME, "LASTNAME는" 을 성}; } – greengrassbluesky

+0

데이터가 할당되는지 확인하는 좋은 방법은 html에 {{employees}}를 입력하는 것입니다. 그것이 무엇을 말하는지보십시오. 나는 또한 당신이 행에서 테이블 본체가 아닌 반복을하도록 확실히 할 것이다. 또한 {{employees}} 작성이 작동하지 않는 경우 .. html .. {{$ parent.employees}}를 사용해보십시오. 그것이 작동하면 범위를 잘못 할당했음을 의미합니다. (해피 코딩) –

+0

내가이 논리를 넣으려고했는데 plunker 그것은 매력처럼 작동합니다.하지만 내 응용 프로그램 파일에서는 그렇지 않습니다. 그것의 아주 이상한. 나는 네가 제안한대로 ng-repeat를 TR로 옮겼다. {{employees}}의 데이터는 여전히 비어 있습니다. 또한 $ parent.employees를 시도했습니다. – greengrassbluesky

0

여기에 작동하는 플런커 Example New Variable가 있습니다.

링크를 클릭 할 때 showData()가 호출되도록 설정했습니다. 컨트롤러 초기화에만 사용하는 것이 좋습니다. @Carlos가 제안한 것처럼 컨트롤러 내부의 직원을 초기화하는 데 아무런 해가 없지만 필요하지 않은 경우 링크에있는 showData 메서드 내에서 만들 수 있습니다.

지침 :

<custom></custom> 

다른 문제가있는 경우는 지시어 설정을 확인합니다.

+0

플 런커를 만들어 주셔서 감사합니다! 고맙습니다. 나는 문제가 어떻게 해결되는지에 대해 정말로 이해하지 못한다. 링커 기능을 통해 범위에 직원을 추가하면 데이터가 인쇄되지만 콘솔에 오류가 발생합니다. 이 경우에도 오류가 발생합니다. – greengrassbluesky

+0

내 플 런커의 오류는 보이지 않으므로 다른 문제가있을 수 있습니다. 모든 코드를 보지 않고 말하기는 어렵습니다. 코드로 플 런커를 만들 수 있습니까? – BatteryAcid

+0

실마리를 가져 주셔서 감사합니다! 나는 그것을 plunker에서 다시 만들 수 있었다. ng-show를 ng-show로 변경했습니다. TV 쇼에 문제가있을 수 있습니까? – greengrassbluesky

관련 문제