Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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中的指令中使用$location_Javascript_Angularjs - Fatal编程技术网

Javascript 如何在AngularJs中的指令中使用$location

Javascript 如何在AngularJs中的指令中使用$location,javascript,angularjs,Javascript,Angularjs,我正在创建一个指令,其中onclick将用户带到另一个页面。有点像定制的“href”标签。我希望$location可以处理重定向功能,但由于我不知道的原因,这不起作用。如果我在控制器中使用$location,它可以工作,但在指令中不工作。代码如下: angular.module("myAPP") .directive('hpHref', ['$location' , function($location){ return { restrict :

我正在创建一个指令,其中onclick将用户带到另一个页面。有点像定制的“href”标签。我希望$location可以处理重定向功能,但由于我不知道的原因,这不起作用。如果我在控制器中使用$location,它可以工作,但在指令中不工作。代码如下:

angular.module("myAPP")
    .directive('hpHref', ['$location' , function($location){
        return {
            restrict : "A",
            link : function(scope, el, attr) {
                    el.bind('click', function(){
                        // more logic
                        console.log("Code reaches here:");
                        $location.path("/" + attr.hpHref);
                    });
            }
        }
    }]);
还尝试将控制器作为指令的一部分。i、 e

angular.module("myApp")
    .directive('hpHref', function(){
        return {
            restrict : "A",
            scope: {},
            controller : ['$scope', '$location', function($scope, $location){
                $scope.goToUrl = function (url) {
                    // some more logic
                    console.log("Code reaches here");
                    $location.path(url);
                };
            }],
            link : function(scope, el, attr) {
                    el.bind('click', function(){
                        scope.goToUrl(attr.hpHref); 
                    });
            }
        }
    });

这也不行。有什么问题?在指令中如何使用$location?

因此,根据上面的评论,任何时候在Angular自己的事件处理程序之外调用Angular(
ng单击
等),都必须调用
$scope.$apply()
)。JQuery事件是人们忘记调用
$apply()

的最常见情况,它不起作用,因为您试图设置文本字符串“url”的路径,而不是url参数的值。删除$location.path(“url”)@MarkSherretta中url周围的引号,这是复制此处代码时的一个输入错误。我现在已经更新了这个问题,$apply.gotour是什么?更改jQuery事件处理程序中的位置后,必须调用
$scope.apply()
。@NikosParaskevopoulos Ha!记住.bind是由AngularJs中包含的JQuery lite提供支持的…所以是的,你的建议很有效!介意把它作为一个答案吗?$scope.$apply()在哪里?在('click',function(){})上?