我在控制器中定义了一个属性
myControllerAttr
路由/控制器(my-mixin.js
)
现在在my-mixin.js中,有各种方法可以从路由/控制器类调用
我的问题是在这些mixin方法中,如何访问控制器属性myControllerAttr
因为this.myControllerAttr
可能无法正常工作
这取决于该方法是从路由或控制器类调用的
我应该添加if条件还是最好的方法?
总而言之,我的问题是如何在
之间进行检查this.get('myControllerAttr') V/s
this.controllerFor(this.routeName).get('myControllerAttr')
答案 0 :(得分:0)
不确定这是否正是您所需要的,但可能是。
// mixins/type-checker.js
export default Ember.Mixin.create({
isRoute: computed('target',function(){
const isUndefined = typeof this.get('target') === 'undefined'
return isUndefined ? true : false
}),
isController: computed('target',function(){
const isUndefined = typeof this.get('target') === 'undefined'
return isUndefined ? false : true
}),
getAttribute(attr){
let attrYouWant
if(this.get('isController')){
attrYouWant = this.get(attr)
}else{
attrYouWant = this.controllerFor(this.routeName).get(attr)
}
return attrYouWant
}
})
然后你可以像这样使用它:
//routes/application.js
import TypeChecker from '../mixins/type-checker'
export default Ember.Route.extend(TypeChecker, {
actions: {
test(){
const testProp = this.getAttribute('prop')
console.log(testProp)
}
}
})
这是twiddle,我已经实现了我的建议。