Comments (3)
Unless I'm mistaken that's just how scoping works in JS:
function Foo() {
this.whatIsThis = function() {
console.log(this);
};
}
var f = new Foo();
f.whatIsThis();
// -> Foo {}
var hmmm = f.whatIsThis;
hmmm();
// -> Window {...}
When you pass a reference to select
to the directive it is no longer implicitly bound to a Controller
instance. If you'd like it to retain that context you'll need to bind it yourself or do something of the sort.
Edit:
I can see how this might be confusing when compared to something like ngClick
- in that case they're evaluating an expression and we're just calling a function as given. I think we'd be probably be alright with moving to a similar approach of evaluating an expression.
from angular-ivh-treeview.
@jtrussell sure thats scoping in JS.
but thats not the desired behavior.
i could think of a additional option like ivh-treeview-callback-scope="category"
which binds the callbacks to this scope.
or as you said use the ng-click
approach.
we cant bind ourself to a specific scope, because angular doesnt allows it:
Error: [$parse:isecff] Referencing call, apply or bind in Angular expressions is disallowed! Expression: category.select.bind(category)
if i try it like this:
ivh-treeview-click-handler="category.select.bind(category)"
from angular-ivh-treeview.
Angular may not let you bind directly in an expression but there's no reason you can't bind your function elsewhere. Or make a local reference to this
if you need it to be preserved regardless of how your function is called:
function Foo() {
var self = this;
this.whatIsThis = function() {
console.log(this);
};
this.whatWasThis = function() {
console.log(self);
};
this.whatWasThis2 = function() {
console.log(this);
}.bind(this);
}
var f = new Foo();
, a = f.whatIsThis
, b = f.whatWasThis
, c = f.whatWasThis2
a(); // --> Window {...}
b(); // --> Foo {}
c(); // --> Foo {}
The reason we went with callbacks rather than $eval
ed expressions (a la ngClick
) was so we could pass references to the node being clicked and the owning tree to the callback. I added an item to our v1 roadmap (#27) to investigate making a switch to having these be expression based. I don't expect we'll introduce any breaking changes until the v1 release though so until then you'll be stuck working with callback references and all that implies. Feel free to comment here (#55) as well.
from angular-ivh-treeview.
Related Issues (20)
- ivh-treeview-children-attribute does not override default config HOT 5
- Remote data bindig HOT 3
- Binding children on promise resolve does not update UI HOT 2
- Disable collapse / expand HOT 1
- When using the checkbox, ivh-treeview-on-item-selected has no effect HOT 2
- How to set the selection can only be changed by clicking on the checkbox HOT 3
- How to change root node dynamically HOT 4
- Does not support tristate properly HOT 5
- On the selection status of the parent node HOT 2
- All subNodes been checked when parentNode been checked HOT 1
- JSbin demos HOT 3
- can we ban the root checkbox? HOT 1
- Disable Twisties & Deselect all children of a parent! HOT 1
- Get Selected Nodes Paths HOT 1
- Performance Improvement - Pop vs Shift HOT 1
- Nothing is being selected.. HOT 1
- select and deselect all method doesn't work on customized children HOT 1
- List Items from Server and apply CSS to specific parents HOT 1
- when data is changed,How to make the check boxes of all nodes unchecked, just like the initial load HOT 1
- how to click on one item, close the other items 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 angular-ivh-treeview.