2014-12-20 5 views
0

Ember의 Em.ArrayProxyEm.Array에는 관찰자에게 content의 변경 사항을 알리는 데 사용할 수있는 많은 프로그래밍 방식이 있습니다. 예를 들면 :Ember ArrayProxy의 모범 사례

  • arrayContentDidChange
  • arrayContentWillChange
  • enumerableContentDidChange
  • enumerableContentWillChange
  • contentArrayWillChange

Em.ArrayProxy도 모두 ArrayProxy의 내용을 조작하기위한 여러 가지 방법이 있습니다. 예 :

this.pushObject('something random'); 
// Or 
this.insertAt(2, 'something random'); 

이전 방법을 사용할 때 이전 방법과 함께 사용해야합니까? Ember의 대개 자동으로 속성 관찰자가 수동 킥이 필요 하겠지만 나는 the documentation이 매우 명확하지 않다고 바보스럽게 생각합니다.

답변

1

아니요, 어떤 방법도 함께 사용할 필요가 없습니다.

ArrayProxy에 항목을 추가하려면 간단히 pushObject()을 입력하십시오. 이 방법을 사용하고 방금 작동하는 것을 보면 알 수 있습니다. 워드 프로세서

:

이 믹스 인은 관찰자 친화적 인 배열과 같은 동작을 구현합니다. 이것은 구체적인 구현이 아니지만, 배열처럼 보이기를 원하는 다른 클래스에 의해 사용될 수 있습니다.

http://emberjs.com/api/classes/Ember.Array.html

Ember.Array은 (유지 mixin없이) 다른 프로그래밍 언어 인터페이스의 이름을 수신하는 클래스의 타입이다.

ArrayProxy는 Ember를 구현하는 다른 모든 객체를 래핑합니다.

http://emberjs.com/api/classes/Ember.ArrayProxy.html

Ember.ArrayProxy 배열

은 이름이 말하는 정확하게는 Ember.Array 인터페이스를 구현 한 모든 개체 주위에 래핑 프록시.

자신이 "서브 클래스"를 Ember.Array으로 만들면 다른 메서드를 구현하거나 재정의 할 수 있습니다. 서브 클래스 ArrayProxy를 친숙하게 만들기 위해서는 구현해야합니다. 또는 사용자 정의 동작을 추가하려면 arrayContentDidChange 때마다 로그에 기록한 다음 해당 메서드를 재정의하고 응용 프로그램에 필요한 모든 논리를 추가하십시오.

이것은 객체 지향 프로그래밍이며 이러한 모든 설명은 모든 프레임 워크의 문서화 범위를 벗어납니다.

0

pushObject 등등 이러한 이벤트가 발생하는지 확인하려면 귀하? documentation for insertAt 가입일

:

이 지정된 인덱스 객체를 삽입하는 프리미티브 대체() 메소드를 사용한다. documentation for replace에서

: 추가하거나 물건을 제거 할 때

또한 이러한 이벤트를 트리거 this.enumerableContentDidChange()

그래서, 예, 제대로 ArrayProxy을 구현 호출해야합니다.