javascript - Passing values from directive to controller -


below html template:

<div ng-app="dr" ng-controller="testctrl">     <test color1="color1" data-method="ctrlfn(msg)"></test>     </div> 

below code:

var app = angular.module('dr', []);  app.controller("testctrl", function($scope) {     $scope.ctrlfn = function(arg) {                 alert(arg);     }  }); app.directive('test', function() {     return {         restrict: 'e',         scope: {             fromdirectivefn: '&method'         },         link: function(scope, elm, attrs) {             //way 1             scope.hello = "some message";             scope.fromdirectivefn(scope.hello);         }     } });  <div ng-app="dr" ng-controller="testctrl">     <test color1="color1" data-method="ctrlfn(msg)"></test>     </div> 

why getting "undefined" instead of "some message"

below fiddle http://jsfiddle.net/j2k7n/27/

your code correct, had several issues here:

<test color1="color1" data-method="ctrlfn(msg)"></test> 

here pass ctrlfn() function controller, takes 1 undefined argument msg, causes alert message "undefined" text. suggest modify html code this:

<test color1="color1" data-method="ctrlfn"></test>   

note pass ctrlfn variable, not function.

in directive code, changed scope binding = make sure ctrlfn point controller function. sets two-way binding between directive's scope , controller (parent) scope. whole js code of directive this:

app.directive('test', function() {     return {         restrict: 'e',         scope: {             fromdirectivefn: '=method'         },         link: function(scope, elm, attrs) {             //way 1             scope.hello = "some message";             scope.fromdirectivefn(scope.hello);         }     } }); 

just replacing & =. working fork: http://jsfiddle.net/l8masomq/


Comments

Popular posts from this blog

python - No exponential form of the z-axis in matplotlib-3D-plots -

php - Best Light server (Linux + Web server + Database) for Raspberry Pi -

c# - "Newtonsoft.Json.JsonSerializationException unable to find constructor to use for types" error when deserializing class -