Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs将函数从控制器传递到指令(或从指令调用控制器函数)-带参数_Javascript_Angularjs - Fatal编程技术网

Javascript Angularjs将函数从控制器传递到指令(或从指令调用控制器函数)-带参数

Javascript Angularjs将函数从控制器传递到指令(或从指令调用控制器函数)-带参数,javascript,angularjs,Javascript,Angularjs,我的问题很简单,我只想把一个控制器函数传递给指令。换句话说,我只想从指令调用一个控制器函数 var myapp=angular.module('myapp',[]); 控制器('myCtrl',['$scope','$timeout',函数($scope,$timeout){ $scope.fnItemsOnAdded=函数(itms){ 警报('嗨,我在控制器添加中。这是您的项目:'+JSON.stringify(itms)); } $scope.fnItemsOnCancel=函数(itm

我的问题很简单,我只想把一个控制器函数传递给指令。换句话说,我只想从指令调用一个控制器函数

var myapp=angular.module('myapp',[]);
控制器('myCtrl',['$scope','$timeout',函数($scope,$timeout){
$scope.fnItemsOnAdded=函数(itms){
警报('嗨,我在控制器添加中。这是您的项目:'+JSON.stringify(itms));
}
$scope.fnItemsOnCancel=函数(itms){
警报('嗨,我在控制器取消中。这是您的项目:'+JSON.stringify(itms));
}
}]);
指令('myPicker',['$timeout',函数($timeout){
var-dtv={};
dtv.template='
  • {{itm.Name}
  • ; dtv.template+=''; dtv.template+=''; dtv.scope={postrl:'@',jsonadd:'&',jsoncancel:'&'}; dtv.restrict='A'; dtv.link=函数($scope、elm、attrs){ $scope.ngModel={}; $scope.ngModel.SelectedKeys=[]; $timeout(函数(){ $scope.ngModel.ItemsList=[ {Name:“Item1”,IsSelected:false}, {Name:“Item2”,IsSelected:false}, {Name:“Item3”,IsSelected:false}, {Name:“Item4”,IsSelected:true}, {Name:“Item4”,IsSelected:false}, ]; },100); $scope.addItems=函数(){ //用于更新SelectedKeys的虚拟逻辑
    对于(var idx=0;idx您就快到了。传递参数的语法有点奇怪

    在HTML中,使用

    <div my-picker jsonadd="fnItemsOnAdded(items)"...
    
    传递给隔离作用域函数(
    jsonadd
    jsoncancel
    )的对象中的键需要与属性中使用的参数名称匹配


    我不知道
    SelectedKeys
    来自何方,但我想你只是为了简洁起见省略了一些内容。

    是的,你说得对,很抱歉我错过了SelectedKeys部分。非常感谢你的富有洞察力的回复。让我现在就试试。我确实尝试了你的建议,效果很好。但同样的东西在我的应用程序中不起作用。仅我在我的应用程序中的区别是,我的页面上的同一个ng应用程序中有3个控制器。我的指令在我的原始控制器“myCtrl”中。我的代码中似乎还有一些疯狂的错误,我似乎不明白。无论如何,非常感谢您的帮助。
    $scope.jsonadd({items: $scope.ngModel.SelectedKeys})