wie Sie dynamisch hinzufügen Beobachter Methoden, um eine Ember.js Objekt
So, ich bin versucht, um dynamisch hinzufügen, diese Beobachter Methoden, um eine Ember.js Objekt
holderStandoutCheckedChanged: (->
if @get("controller.parent.isLoaded")
@get("controller").toggleParentStandout(@get("standoutHolderChecked"))
).observes("standoutHolderChecked")
holderPaddingCheckedChanged: (->
if @get("controller.parent.isLoaded")
@get("controller").toggleParentPadding(@get("holderPaddingChecked"))
).observes("holderPaddingChecked")
holderMarginCheckedChanged: (->
if @get("controller.parent.isLoaded")
@get("controller").toggleParentMargin(@get("holderMarginChecked"))
).observes("holderMarginChecked")
Habe ich diesen code so weit, aber das Element.methodToCall Funktion nicht immer aufgerufen
methodsToDefine = [
{checkerName: "standoutHolderChecked", methodToCall: "toggleParentStandout"},
{checkerName: "holderPaddingChecked", methodToCall: "toggleParentPadding"},
{checkerName: "holderMarginChecked", methodToCall: "toggleParentMargin"}
]
add_this = { }
for item in methodsToDefine
add_this["#{item.checkerName}Changed"] = (->
if @get("controller.parent.isLoaded")
@get("controller")[item.methodToCall](@get(item.checkerName))
).observes(item.checkerName)
App.ColumnSetupView.reopen add_this
Kann mir jemand sagen was ich falsch mache ? Gibt es einen besseren Weg, dies zu tun ? Sollte ich dies tun in einer mixin ? Wenn ja, bitte
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, Ihre genaue Verwendung Fall, aber wie du gesagt hast, deine beschriebene problem gelöst werden könnte mit einem Mixin, siehe http://jsfiddle.net/pangratz666/a3Usx/
JavaScript:
Beispiel use-case:
Andere Implementierung wäre ein mixin verwendet ein array
watchProperties
, die eine Liste von Eigenschaften, die beachtet werden, siehe http://jsfiddle.net/pangratz666/bSF3Z/:JavaScript:
[email protected]
ohne Schleife durch das array, um herauszufinden, was sich geändert hat. dies ermöglicht mir dies eine Art Proxyfunktion ermöglicht dynamische Formular-Feld-Objekte kommunizieren mit einer ganz anders aussehenden Modell.