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})