Comments (5)
it could be nice to also have a convention for ObserverLocator... maybe using the same convention as per properties (.withProperty) in Behaviors? For example:
export class AClass {
static metadata(){ return Observer.withProperty("name", "nameChanged"); }
constructor(){
this.name = "Daniel";
}
nameChanged(value) { ... }
}
here metadata would be used to choose the fields to observe... otherwise it could be done automatically inspecting method and attribute names based on the convention attrNameChanged (if there is a property name
and a method nameChanged
, then observe on name
)
from binding.
You should try it out:
export class AClass {
static metadata(){ return Metadata.withProperty("name"); }
constructor(){
this.name = "Daniel";
}
nameChanged(value) { ... }
}
I believe that this should work for view models composed by the router or the compose binding. Dynamic UI composition basically uses the same infrastructure as custom elements.
from binding.
nice! i didn't know withProperty could be used outside of a custom behavior... just made a test with a VM managed by a router and it works perfectly. The more i use this framework the more i like it :D
So actually this is already implemented for most use cases, the only exception is in classes that has no UI representation (like a service that is only injected in VM) because in that case there is no component who can inspect the metadata property and set-up the observer... and probably would not make sense for those anyway
from binding.
So, for that case, I think we'll have an explicit API as @davismj requests in the issue proper.
The secret is that underneath, your basic view-models are essentially the same as a custom element. Actually, you can use them in their own view as a custom element, without needing to import them. You wouldn't do that normally as that would cause an infinite recursion. But, if you were to use an if
behavior on it, so that you could toggle it, it would work ;)
from binding.
The next release contains the new bindingSystem
object which can be used to subscribe/unsubscribe from properties and collections, among other helpers.
from binding.
Related Issues (20)
- path expressions containing 'in' no longer working, 'in' treated as keyword HOT 3
- Issue with aurelia/binding typings HOT 12
- Issue with interpolation binding inside HTML `<option>` element HOT 2
- Checkbox event arguments in repeaters not binding correctly HOT 5
- @behel33 Thanks for creating the issue, I couldn't recreate the behavior you described, can you help fix this codesandbox https://codesandbox.io/s/x761qq5p3q HOT 1
- Infinite loop with 100+ observers HOT 17
- click.delegate bindings stop working HOT 14
- click.delegate firing for all clicks on firefox rather than just left click HOT 5
- Binding on role attribute not working in Firefox HOT 4
- Delegate event bubbling does not match native behavior in shadow dom
- Infinite loop in aurelia-bindingd.ts OverrideContext HOT 13
- parsing of template issue: ${moment().toISOString()} does not work HOT 1
- Parser Error: Invalid start of expression at column 0 in expression []
- Optimizing getter access HOT 1
- Matcher ignored within repeater HOT 7
- Delegate does not support shadow dom for Firefox
- getContextFor() doesn't handle a non-object bindingContext HOT 3
- Can we use/make attached/detached method inside aurelia custom element? HOT 3
- Binding checkboxes: custom matcher does not work when using repeat.for HOT 3
- SetterObserver keeps old value retained HOT 2
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 binding.