所以我试图动态地将这些观察者方法添加到Ember.js对象
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")
Run Code Online (Sandbox Code Playgroud)
到目前为止我有这个代码但是没有调用item.methodToCall函数
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
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么?有一个更好的方法吗 ?我应该在混音中这样做吗?如果是的话请
在Ember应用程序中,假设您有观察者或观察阵列的属性,如下所示:
topContributor: (function() {
// ... loop over articles (hence slow) ...
}).property('articles.@each.author')
Run Code Online (Sandbox Code Playgroud)
articles例如,通过ember-data 更新数组会反复触发属性函数articles.length一次.
有没有办法在所有更改完成并刷新runloop后将更新折叠为一个延迟更新?
在Ember.js中,是否有一种添加观察者的好方法,该观察者将观察子类实例上的所有更改Ember.Object?
即(咖啡)
Bat = Ember.Object.extend
name: null
age: null
hank = Bat.create
name: 'Hank'
age: 2
#Something like this
hank.addObserverToAll myClass, 'handleChange'
Run Code Online (Sandbox Code Playgroud)