2013-02-06 2 views
0

깃발이 있습니다. 일부 항목이 페이지에 표시되는 방식을 변경하는 true/false로 설정하고 있습니다. 내 템플릿에 가치를 부여하는 데 어려움을 겪고 있으며 실제로 작동합니다. 템플릿 내부에없는 일반 HTML이 정상적으로 작동합니다.템플릿에 값 삽입 AngularJS

restrict: 'E', 
     scope: { 
      speedDirection: "@", 
      speedName: "@", 
      value: "@", 
      editElements: "=" 
     }, 
     template: 
     '<div>'+ 
      '<p class="body-text">{{speedDirection}} '+ 
      '<input type="text" name="{{speedName}}" value="{{value}}" ng-show="editElements">'+ 
      '<span ng-hide="editElements">{{value}}</span>'+ 
      '</p>'+ 
     '</div>', 

지나치게 전달 된 값이 아니라 editElements의 동적 모델 값을 사용하고 싶습니다. 그런 식으로 변경하면 표시된 템플릿의 업데이트가 반영됩니다. 이 변수는 테스트 데이터를 저장하는 객체에 정의됩니다.

function MyObject($scope) { 
    $scope.editElements = true; 

이 방법을 사용할 수 있습니까? 나는 (위와 같이) "@"및 {{editElement}} 비트를 사용하여이를 전달하려고 시도했습니다. 사용자 정의 HTML 부분 :

<speed-limit speed-direction="A to B:" 
        speed-name="reverse" 
        value="{{newObject.speedLimit[0]}}" 
        editElement="editElements"> 
        </speed-limit> 

UPDATE : 나는 Batarang를 설치 한 그것은 "editElement : 널 (null)"을 가지고 내 사용자 지정 요소 (속도 제한)의 특정 부분을 보여줍니다. 그러나 editElements가 참조하는 다른 영역은 올바르게 설정됩니다. 이것은 이상한 범위 문제입니까? 주석에서 설명하고있는 바와 같이

+0

귀하의 ng-show/hide는 editElement 인'scope : {...} '에 정의 된 것과는 다른 editElements를 사용하고 있습니다. 이 지시문에서 다른 이름을 사용하고 싶습니까? –

+0

내가 지금하고있는 것처럼 HTML을 통해 editElements를 전달할 필요가 없다면 같은 이름을 유지하는 것이 좋습니다. – Organiccat

+0

속성에 동일한 이름을 사용할 수 있지만 격리 범위를 작성하기 때문에 HTML을 통해 지시문에 전달해야합니다. 이것을보십시오 : HTML에서, editElements = "editElements"; 지시어 : scope : {..., editElements : "="}. 템플릿을 그대로 둡니다. –

답변

2

는 같은 이름은 속성의 이름을 사용할 수 있지만, 그것은 뱀의 경우 수 있어야합니다, 그래서 = "editElements"요소 편집 :

<speed-limit speed-direction="A to B:" 
    speed-name="reverse" 
    value="{{newObject.speedLimit[0]}}" 
    edit-elements="editElements"> 
</speed-limit> 

기분 나빠하지 마십시오을 이것에 대해 ... 모든 각도 개발자는 이것에 적어도 1 시간 (또는 그 이상)의 삶을 낭비했다고 생각합니다.

+1

github에서 문제를 제출했습니다. 처음으로이 문제를 당황하게 다루는 것이 아닙니다. Angular가 어떤 종류의 오류를 던져야한다고 생각합니다. 최소한 "그러한 변수는 발견되지 않았습니다". – Organiccat