Javascript angularjs使用$eval从指令访问控制器的$scope

Javascript angularjs使用$eval从指令访问控制器的$scope,javascript,html,angularjs,Javascript,Html,Angularjs,我试图在指令内部访问在指令控制器范围内定义的方法 这是我的指令 angular.module('myApp', []).directive('jqmultiselect', function($timeout){ return { restrict: 'A', scope: { info: '=info', }, link: function (scope, element, attrs, ngModelCtrl) { $time

我试图在指令内部访问在指令控制器范围内定义的方法

这是我的指令

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);
    };
});
我试图做的是通过HTML元素的属性标记调用控制器中名为“reloadModule()”的函数

我的一段HTML代码

<select
    jqmultiselect 
    info="myInfo" 
    customclick="reloadModule(info)">
    <option>1</option>
    <option>2</option>
    <option>3</option>
</select>

1.
2.
3.
更具体的例子在JSFIDLE上


您知道如何使其显示内部带有“更改确定”的警报吗

您的小提琴样品中有问题。一个是您丢失的
ng控制器
声明:

<div ng-app="myApp" ng-controller="MainCtrl">
这允许您在指令中调用方法,就像
scope.customclick()一样简单

关于第二个问题,如何根据我的指令更新var,请参见:

以下是更正的版本:


如果您觉得这有帮助,请不要忘记将其标记为您的答案抱歉,我想您在编辑JSFIDLE之前已经回答了!感谢
&
信息,但是我仍然无法让它更新父范围中的“信息”数据。请参见更新为
&
:(我想记录“更改确定”)的示例。有什么想法吗?是的,但为什么$scope.myInfo没有更改?({{myInfo}}停留在'test'而不是'change ok')我们可以从指令中修改其在控制器范围中的值吗?看看这个JSFIDLE,也许它是一个更好的例子:在您的指令中是$scope.info,而仅仅是info
angular.module('myApp', []).directive('jqmultiselect', function($timeout){
    return {
        restrict: 'A',
        scope: { 
            info: '=info',
            customclick:"&"
        },
...
scope.$apply(function () {
   scope.info = "change ok";
});