我在指令内部尝试访问在我的指令控制器范围内定义的方法
这是我的指示
angular.module('myApp', []).directive('jqmultiselect', function($timeout){
return {
restrict: 'A',
scope: {
info: '=info',
},
link: function (scope, element, attrs, ngModelCtrl) {
$timeout(function(){
//simple example
$(element).click(function(){
//do something with info
info = 'test';
scope.$eval(attrs.customclick);
});
});
}
};
}).controller('MainCtrl', function ($scope, $http, $timeout){
$scope.myInfo="test";
$scope.reloadModule = function(info){
console.log(info);
};
});
我要做的是调用名为" reloadModule()"的函数。在控制器中通过HTML元素的属性标记
我的HTML代码
<select
jqmultiselect
info="myInfo"
customclick="reloadModule(info)">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
更具体的例子是关于Jsfiddle http://jsfiddle.net/7j3HV/2/
你知道怎样才能让它显示警告&#34;改变确定&#34;在里面?
答案 0 :(得分:0)
您的小提琴样本中存在问题。一个是你遗漏的ng-controller
声明:
<div ng-app="myApp" ng-controller="MainCtrl">
另一个并不完全是问题,而是“隔离范围”的一个特征&#34;指令,允许您使用&
包含来自父控制器的方法。
类似的东西:
angular.module('myApp', []).directive('jqmultiselect', function($timeout){
return {
restrict: 'A',
scope: {
info: '=info',
customclick:"&"
},
...
这允许您在指令中调用方法,就像scope.customclick();
关于你的第二个问题,如何在我的指令中更新var,fiddle sample:
scope.$apply(function () {
scope.info = "change ok";
});
以下是更正后的版本: