Comments (11)
So you're thinking about something that would automatically parse the subviews attribute and call registerSubview for everything there? When would that get called?
from ampersand-view.
Yep. Just adding more attributes to the prepareView function that is created in _parseSubview and the model or collection to waitfor. It would be called on subviewParent.on('change'). Just like it is now.
Something like this. (a very crude solution)
// ## _parseSubview
// helper for parsing out the subview declaration and registering
// the `waitFor` if need be.
_parseSubview: function (subview, name) {
var self = this;
var opts = {
selector: subview.container || '[role=' + subview.role + ']',
waitFor: subview.waitFor || subview.model || subview.collection || '',
prepareView: subview.prepareView || function (el) {
return new subview.constructor({
el: el,
parent: self,
model: subview.model ? getPath(self, subview.model) : self.model,
collection: subview.collection ? getPath(self, subview.collection) : null
});
}
};
function action() {
var el, subview;
// if not rendered or we can't find our element, stop here.
if (!this.el || !(el = this.get(opts.selector))) return;
if (!opts.waitFor || getPath(this, opts.waitFor)) {
subview = this[name] = opts.prepareView.call(this, el);
subview.render();
this.registerSubview(subview);
this.off('change', action);
}
}
// we listen for main `change` items
this.on('change', action, this);
}
from ampersand-view.
I'd love to see that added. What's status here?
from ampersand-view.
The default prepareView
currently looks like this:
return new subview.constructor({
el: el,
parent: self
});
So the subview will have a reference to its parent so you within the subview you could reference it by doing this.parent.model
for example. But it'd be nicer for the subview to just assume this.model
of course.
I like where you're going with this. I'll play around with an implementation.
from ampersand-view.
I'm currently using this fork where shorthands are implemented and waitFor takes multiple dependencies.
#44
from ampersand-view.
closing per commit
from ampersand-view.
That's not in master yet
from ampersand-view.
Seems this isn't in master yet - please merge! 👍
from ampersand-view.
That commit is from this branch afaik #64 Which has merge conflicts still. @HenrikJoreteg what are the odds we could take another look at that PR this week?
from ampersand-view.
@wraithgar I'm a +1 on simplifying things here, but there's certainly some variance in opinions on how to actually do it, I think that's why things stalled. Philip raised some valid concerns as feedback to my original PR.
from ampersand-view.
Henrik made some progress on this, but it wasn't quite all there yet. if someone wants to pick it up and run with it, feel free. however, given that it's not high priority, I am closing out until someone takes the reigns.
from ampersand-view.
Related Issues (20)
- List cdaringe as lead maintainer and add him to core team HOT 6
- deep nested subviews issue of re-rendering HOT 14
- Possible fix to template engines that attempt to copy the getter-laden context from going crazy HOT 3
- $('.className') vs this.queryByHook('hookName') HOT 2
- The ability to extend the declarative style of the subviews is very limited HOT 6
- Using deprecated version of ampersand-state HOT 1
- get-object-path issues + proposal HOT 6
- reset() throwing errors since I build from ES6 HOT 4
- Release ampersand-*-view HOT 1
- Release new version HOT 1
- Make bindings extensible HOT 11
- Enhance docu about _upsertBindings() HOT 4
- _downsertBindings needs to clear the _subviews array
- renderSubview expects subview render method to return subview instance HOT 3
- Possible bug with the auto-generated prepareView() ? HOT 4
- Enchancement bubble subview events
- Enhancement to provide single declarative place for event listeners
- Looking to become maintainer HOT 6
- package-lock.json HOT 1
- NPM Audit HOT 1
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 ampersand-view.