Comments (4)
Hi,
Yeah. This is actually expected. The reason is fullCake
is part of the App.Model
prototype. JavaScript prototypes are the same for all objects and do not getted cloned. I am cloning regular observables but not dependency ones. You could resolve your issue by using the code below which creates a new fullCake
variable every time a Cake
Model is created.
var App = blocks.Application();
var Cake = App.Model({
cakeType: blocks.observable(),
cakeSize: blocks.observable(),
init: function () {
this.fullCake = blocks.observable(function() {
return this.cakeType() + 'cake (' + this.cakeSize() + ')';
}, this);
}
})
var Cakes = App.Collection(Cake);
App.View('Bakery', {
cakes: Cakes([
{ cakeType: 'strawberry', cakeSize: 'small' },
{ cakeType: 'chocolate', cakeSize: 'large' }
])
});
Additionally, I will leave this issue open to think about if there could be a way to fix the problem.
from jsblocks.
Hi
Thanks for the prompt reply!
I got the code working with your solution.
As for solving the problem, I haven't really looked into jsblocks any deeper but spontaneously, I'd say it could be nice having a self-reference in dependency observables that can access the instance data. I'm thinking about not cloning the function prototype but internally passing it a self
variable which contains the data of the current context.
For anyone interested, another solution I just figured that I personally like more (at least code-style wise) is using the following code:
var Cake = App.Model({
cakeType: blocks.observable(),
cakeSize: blocks.observable(),
fullCake: function(self) {
return self.cakeType() + 'cake (' + self.cakeSize() + ')';
},
});
<div data-query="view(Bakery)">
<div data-query="each(cakes)">
<h2>Let's eat some, {{fullCake($this)}}!</h2>
</div>
</div>
from jsblocks.
Hmm. Yes. This is interesting idea. I really like how you approached the problem. I will think about it and update you on the status.
Thanks.
from jsblocks.
I have fixed the problem. Now you can use the code from your first post and it will work how it is expected.
from jsblocks.
Related Issues (20)
- observable event handle not binding correctly to DOM HOT 4
- Define views in different instances of time HOT 6
- Issues with the 'sort'-extender.
- How to disable print log in the console for production mode? HOT 2
- Roadmap e.g. custom components, fixes HOT 3
- How can I use route GET?Thank you! HOT 2
- The push state is not working when I press back button from my browser. HOT 6
- Evaluation of index in 'for' loop for modified collection is sometimes incorrect HOT 4
- How can we use asset pipeline library with jsblocks server. HOT 3
- Can't import Jquery? HOT 2
- data-query set value to options not working in Chrome & Firefox HOT 3
- TypeError: undefined is not an object (evaluating 'e.$this=a[o]') HOT 3
- blocks enables XSS security breaches with enduser supplied data HOT 1
- How to use reuse HTML Tags? HOT 2
- Change buildsystem to wrap modules in selfexecuting closure. HOT 3
- Add a method to execute expressions for external libs. HOT 5
- Make models behavior for non obervable value consistent. HOT 4
- Prevent the {{expressions}} from showing up in the client at loading time HOT 5
- Is jsblocks a node only solution? HOT 2
- "Cannot read property 'children' of undefined" if static file have no dom 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 jsblocks.