Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 ng在指令'内单击不工作;s模板_Javascript_Jquery_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript ng在指令'内单击不工作;s模板

Javascript ng在指令'内单击不工作;s模板,javascript,jquery,angularjs,angularjs-directive,Javascript,Jquery,Angularjs,Angularjs Directive,我是角度自定义指令的初学者。我只是使用custom指令根据controllers作用域值呈现两个html模板。呈现html ng click=“myclick()”事件后,两个模板都不起作用 view.html <div ng-controller = 'ctrl1'> <div class="doc-list-wrapper" ></div> </div> <div ng-controller = 'ctrl2'>

我是角度自定义指令的初学者。我只是使用custom指令根据controllers作用域值呈现两个html模板。呈现html ng click=“myclick()”事件后,两个模板都不起作用

view.html

<div ng-controller = 'ctrl1'>
     <div class="doc-list-wrapper" ></div>
</div>
<div ng-controller = 'ctrl2'>
    <div class="doc-list-wrapper" ></div>
</div>
我的指令

app.directive('docListWrapper', ['$timeout', function ($timeout) {
        return {
            restrict: 'C',
            priority: 500,
            replace: true,
            templateUrl: 'tmpl-doc-list-wrapper',
            scope: { docs: '=docs'},
            link: function (scope, element, attrs) {
            }
        };
    }])
控制器

app.controller('ctrl1', function ($scope, $interval) {
    $scope.docs = [{"doc":"http://google.com","stageName":"Project 1"},
                        {"doc":"http://google.com","stageName":"Project 2"},
                        {"doc":"http://google.com","stageName":"Project 3"},
                        {"doc":"http://google.com","stageName":"Project 4"},
                        {"doc":"http://google.com","stageName":"Project 5"},
                        {"doc":"http://google.com","stageName":"Project 6"},
                        {"doc":"http://google.com","stageName":"Project 7"},
                        {"doc":"http://google.com","stageName":"Project 8"}];
    $scope.myclick = function(){
        alert('clicked me ')
    }
});

app.controller('ctrl2', function ($scope, $interval) {
    $scope.docs = [{"doc":"http://google.com","stageName":"Unit 1"},
                        {"doc":"http://google.com","stageName":"Unit 2"},
                        {"doc":"http://google.com","stageName":"Unit 3"},
                        {"doc":"http://google.com","stageName":"Unit 4"},
                        {"doc":"http://google.com","stageName":"Unit 5"},
                        {"doc":"http://google.com","stageName":"Unit 6"},
                        {"doc":"http://google.com","stageName":"Unit 7"},
                        {"doc":"http://google.com","stageName":"Unit 8"}];
    $scope.myclick = function(){
        alert('clicked me ')
    }
});

您需要使用注入范围来定义控制器中的数据和函数:

Scope.myclick = function(){
    alert('clicked me ')
}
应该是

$scope.myclick = function(){
    alert('clicked me ')
}
在您的控制器中,但您的指令是
隔离
作用域,因此您需要通过
作用域:{myclick:&“}
传递myclick,或者使用指令控制器方法定义
myclick

使用:

onclick="angular.element(this).scope().myclick()"

正确答案:)@sanman阅读有关angular的独立作用域的更多信息,要真正理解angular,这是一个关键点…@sanman:您如何将这些值传递给docListWrapper您能告诉我…阅读此stackoverflow,您会有更好的想法。。。检查指令docListWrapper是否正在从使用它的html中传递这两个值@Thalaivar app.directive('docListWrapper',['$timeout',function($timeout){return{restrict:'C',priority:500,replace:true,templateUrl:'tmpl doc list wrapper',scope:{docs:'=docs',myclick:&},link:function(scope,element,attrs){} }; }]). 我尝试了这个,但不起作用。您需要从这里传递它。…
angular.element
仅在
debugInfo
可用时才起作用。它可能会在生产中失败。
$scope.myclick = function(){
    alert('clicked me ')
}
$scope.myclick = function(){
    alert('clicked me ')
}
onclick="angular.element(this).scope().myclick()"