Skip to content

Commit

Permalink
Merge pull request #2055 from canjs/component-method-export
Browse files Browse the repository at this point in the history
Allows component to export a method to the parent scope.
  • Loading branch information
daffl committed Nov 4, 2015
2 parents 25dc018 + 27f1c19 commit 1479107
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
3 changes: 2 additions & 1 deletion component/component.js
Expand Up @@ -234,7 +234,8 @@ steal("can/util", "can/view/callbacks","can/view/elements.js","can/view/bindings
// it's possible there's nothing to update
if(bindingData.syntaxStyle === 'new' && bindingData.parentCompute) {
bindings.initializeValues(bindingData,
prop === "." ? viewModel : viewModel.attr(prop),
// call read so functions can be exported correctly.
prop === "." ? viewModel : can.compute.read(viewModel, can.compute.read.reads(prop), {}).value,
bindingData.parentCompute, function(){}, function(ev, newVal){
bindingData.parentCompute(newVal);
});
Expand Down
23 changes: 22 additions & 1 deletion view/bindings/bindings_test.js
Expand Up @@ -1435,7 +1435,7 @@ steal("can/view/bindings", "can/map", "can/test", "can/component", "can/view/mus
test("two-way element empty value (1996)", function(){


var template = can.view.stache("<input can-value='age'/>");
var template = can.stache("<input can-value='age'/>");

var map = new can.Map();

Expand All @@ -1461,6 +1461,27 @@ steal("can/view/bindings", "can/map", "can/test", "can/component", "can/view/mus

equal(map.attr("age"), "", "updated from input");

});

test("exporting methods (#2051)", function(){
can.Component.extend({
tag : 'foo-bar',
viewModel : {
method : function() {
ok(true, "foo called");
return 5;
}
}
});

var template = can.stache("<foo-bar {^@method}='*refKey'></foo-bar>{{*refKey()}}");

var frag = template({});
equal( frag.lastChild.nodeValue, "5");




});


Expand Down

0 comments on commit 1479107

Please sign in to comment.