Właśnie znalazł ciekawe pozorną niespójność, co jest dozwolone w wyrażeniach kątowe:Dlaczego przypisanie nie zawsze działa w wyrażeniach kątowych?
- Jest możliwe, aby wykonać zadanie w wyrażeniu
- To łamie jeśli zadanie polega na zmienną lokalną z ngRepeat
- Problem ten rozwiązać można za pomocą ustawiającej zdefiniowany w sterowniku zamiast przypisania w wyrażeniu
Wydaje się, że docs on expressions jawnie blokuje przepływ sterowania w wyrażeniach i nie widzę żadnej wzmianki o takim zachowaniu powyżej.
Przypuszczam, że na wynos z tego powodu jest prawdopodobnie lepszym wzorcem do wykorzystania setera, ale czy ktoś wie o bardziej precyzyjnym odwołaniu się do tego, co jest możliwe w wyrażeniach?
Może byłoby lepiej, gdyby Angular jednostronnie zabronił wykonywania zadań. (Powiązana niespójność polega na tym, że możliwe jest zwiększenie wyrażenia za pomocą i = i + 1, ale nie za pomocą i + = 1 ...).
Powinieneś używać obiektu jako modelu zamiast uzyskiwania dostępu do zakresu nadrzędnego przez $ parent. Uzyskanie dostępu do $ parent prowadzi do kruchego kodu, ponieważ przestanie działać, jeśli dodamy inny zakres pomiędzy. –
@AndersEkdahl masz rację, właśnie podałem dostępne opcje jako odpowiedź, w artykule na temat wskaźnika wyjaśniono przypadki użycia i problemy: –
Awesome! Dzięki za szybką odpowiedź! To ma sens. FYI, prawdziwym przypadkiem użycia dla tego jest dynamiczne wybieranie tła strony w edytorze stron na podstawie tablicy podglądu "próbki". Ustawiana wartość nazywa się "selectedClass", ale jest ciągiem znaków, więc domyślam się, że nadal jest typem pierwotnym i dotyczy tego samego problemu. Choć niesamowite jest, aby zobaczyć swoje rozwiązania, czy uważasz, że seter w kontrolerze byłby lepszym projektem? – bellkev