수색…


비고

이 플 런커 를 사용하여 예를 가지고 놀아보십시오.

@ 단방향 바인딩, 속성 바인딩.

문자열이나 숫자와 같은 리터럴 값 (객체가 아닌)을 전달합니다.

하위 범위는 값을 업데이트하는 경우 자체 값을 가져오고 상위 범위는 이전 값 (하위 범위는 괄호 범위 값을 수정할 수 없음)을가집니다. 상위 범위 값이 변경되면 하위 범위 값도 변경됩니다. 모든 보간은 지시 생성뿐만 아니라 다이제스트 호출에 매번 나타납니다.

<one-way text="Simple text." <!-- 'Simple text.' -->
         simple-value="123" <!-- '123' Note, is actually a string object. -->
         interpolated-value="{{parentScopeValue}}" <!-- Some value from parent scope. You can't change parent scope value, only child scope value. Note, is actually a string object. -->
         interpolated-function-value="{{parentScopeFunction()}}" <!-- Executes parent scope function and takes a value. -->
         
         <!-- Unexpected usage. -->
         object-item="{{objectItem}}" <!-- Converts object|date to string. Result might be: '{"a":5,"b":"text"}'. -->
         function-item="{{parentScopeFunction}}"> <!-- Will be an empty string. -->
</one-way>

= 양방향 바인딩.

참조로 값을 전달하면 두 범위 사이에서 값을 공유하고 두 범위에서 값을 조작하려고합니다. 보간에 {{...}}을 사용하면 안됩니다.

<two-way text="'Simple text.'" <!-- 'Simple text.' -->
         simple-value="123" <!-- 123 Note, is actually a number now. -->
         interpolated-value="parentScopeValue" <!-- Some value from parent scope. You may change it in one scope and have updated value in another. -->
         object-item="objectItem" <!-- Some object from parent scope. You may change object properties in one scope and have updated properties in another. -->
         
         <!-- Unexpected usage. -->
         interpolated-function-value="parentScopeFunction()" <!-- Will raise an error. -->
         function-item="incrementInterpolated"> <!-- Pass the function by reference and you may use it in child scope. -->
</two-way>

함수를 참조로 전달하는 것은 나쁜 생각입니다. 범위에서 함수 정의를 변경하고 두 개의 불필요한 관찰자가 만들어 지도록 허용하려면 관찰자 수를 최소화해야합니다.

& 함수 바인딩, 표현 바인딩.

메소드를 지시문에 전달하십시오. 상위 범위의 컨텍스트에서 표현식을 실행하는 방법을 제공합니다. 메소드는 부모의 범위 내에서 실행될 것이고, 거기에 자식 스코프의 일부 매개 변수를 전달할 수 있습니다. 보간에 {{...}}을 사용하면 안됩니다. &를 지시문에 사용하면 부모 범위에 대해 계산 된 표현식의 값을 반환하는 함수가 생성됩니다 (참조를 전달한 곳과 같지 않음).

<expression-binding interpolated-function-value="incrementInterpolated(param)" <!-- interpolatedFunctionValue({param: 'Hey'}) will call passed function with an argument. -->
                    function-item="incrementInterpolated" <!-- functionItem({param: 'Hey'})() will call passed function, but with no possibility set up a parameter. -->
                    text="'Simple text.'"  <!-- text() == 'Simple text.'-->
                    simple-value="123" <!-- simpleValue() == 123 -->
                    interpolated-value="parentScopeValue" <!-- interpolatedValue() == Some value from parent scope. -->
                    object-item="objectItem"> <!-- objectItem() == Object item from parent scope. -->
</expression-binding>

모든 매개 변수는 함수로 래핑됩니다.

간단한 샘플을 통해 사용 가능한 바인딩

angular.component("SampleComponent", {
  bindings: {
     title: '@',
     movies: '<',
     reservation: "=",
     processReservation: "&"
  }
});

여기에는 모든 바인딩 요소가 있습니다.

@ 는 어떤 방식 으로든 부모 관찰자에서 자식 관찰자없이 아주 기본적인 바인딩이 필요하다는 것을 나타냅니다. 상위 범위의 모든 업데이트는 상위 범위에 머물 것이고 하위 범위에 대한 모든 업데이트는 상위 범위에 전달되지 않습니다.

< 단방향 바인딩을 나타냅니다. 부모 범위의 업데이트는 자식 범위에 전파되지만 자식 범위의 업데이트는 부모 범위에 적용되지 않습니다.

= 은 이미 양방향 바인딩으로 알려져 있습니다. 부모 범위의 모든 업데이트는 자식 업데이트에 적용되고 모든 자식 업데이트는 부모 범위에 적용됩니다.

& 는 출력 바인딩에 사용됩니다. 구성 요소 설명서에 따라 부모 범위 방법을 참조하는 데 사용해야합니다. children 범위를 조작하는 대신 업데이트 된 데이터로 부모 메서드를 호출하면됩니다!

옵션 특성 바인딩

bindings: {
   mandatory: '=' 
   optional: '=?',
   foo: '=?bar'
}

선택적 속성은 물음표로 표시해야합니다. =? 또는 =?bar ($compile:nonassign) 예외에 대한 보호입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow