Comments (5)
How about if we would use Ember.get(ability, key)
:) Would that solve your issue?
from ember-can.
Yes, using return get(ability, propertyName);
would indeed fix my issue :) ! (Quite better than my initial solution).
I can open a PR, if you like !
from ember-can.
Hi,
Thank you for raising this up! That indeed could be a solution, however, I'm not sure If we want to support EmberObject further (open on others' voices) as it has been kind of deprecated.
Another solution for your case could be defining abilities in the constructor if you are able to get all the keys. I usually follow this path. So instead of relaying on unknownProperty
you could do:
abilities.forEach((key) => {
Object.defineProperty(this, key, { get() { return this.hasAbility(key) } })
})
Let me know If that would solve your issue :)
from ember-can.
Hello @Exelord,
I agree with you that with the soft deprecation of EmberObject this might not be the best solution but then I think there might be some confusion for other users with the current state of ember-can.
Currently, the ability class still extends EmberObject itself so as a user I would expect to be able to rely on public APIs exposed by EmberObject without breakings.
From my point of view, ember-can should either get rid of EmberObject and release a major release with breaking changes (this may also resolve #92) or stay backward compatible with features supported by EmberObject.
What do you think ?
That said, I understand this is an open source project and you might not want to do that for a small edge case you didn't encounter.
Regarding your solution (thanks for it), it is in fact what I've done first, this works pretty well and I also think It's the go to solution to not rely on EmberObject. But, in our case, we also sometimes override the unknownProperty in our abilities' subclasses and that would involve a refactor that is out of scope of my initial work to get our app up to date and octane ready.
Anyway, I'm totally cool with keeping my can helper override until we can afford to spend some time to refactor our abilities with your solution :) !
from ember-can.
Ok, cool! I will accept it :)
from ember-can.
Related Issues (20)
- Cannot Mock Ember-can in tests to always return true HOT 2
- Cannot use `Ember-can` in Polymorphism HOT 1
- Path ember-can/services/can is not resolving HOT 1
- Dependencies outdated HOT 1
- Using can in a glimmer component getter blows up dependencies HOT 3
- Update doc for testing HOT 3
- Stuck at 1.1.1 HOT 7
- Explicitly passed ability and property name HOT 2
- alias and computed not working for can HOT 1
- ability computed doesn't work with @glimmer/component
- Use native ES6 classes instead of EmberObject for Ability HOT 3
- No "exports" main defined in @babel/helper-compilation-targets/package.json
- Error when running tests: this version of ember-auto-import requires the app to have a dependency on webpack HOT 10
- TypeScript support HOT 2
- Release HOT 2
- `can` helper error HOT 3
- Errors when attempting to create a native class extending from Ability HOT 2
- Interested moving to a V2 addon ? HOT 1
- async abilities
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ember-can.