从回调函数捕获响应或将变量传递给回调函数?

时间:2014-01-23 12:47:38

标签: javascript

使用facebook api,你可以添加一个只要有人点击了类似按钮就会触发某个功能的监听器:

FB.Event.subscribe('edge.create', page_like_callback);

这就是我的功能,我在哪里听:

function($scope, $window) {
  $scope.liking = $window.liking;
  FB.Event.subscribe('edge.create', page_like_callback);
}

我想设置$scope.liking = true;无论何时有人点击如下:

var page_like_callback = function(url, html_element) {
    $scope.liking = true;
};

但是$scope变量在回调中是不可访问的。我想要将$ scope传递给回调或从回调中获取return并使用它来设置类似。什么是最好的方法,我应该怎么做?

2 个答案:

答案 0 :(得分:1)

你可以让一个函数以$scope作为参数返回你的回调,以便现在回调函数捕获$scope

var page_like_callback = function($scope) {
    return function(url, html_element) {
        $scope.liking = true;
    };
}

FB.Event.subscribe('edge.create', page_like_callback($scope));

答案 1 :(得分:1)

那是因为$ scope变量只在你的函数($ scope,$ window)中定义,所以你需要确保page_like_callback可以访问它。一种方法是:

function($scope, $window) {
  var page_like_callback = function(url, html_element) {
    $scope.liking = true;
  };

  $scope.liking = $window.liking;
  FB.Event.subscribe('edge.create', page_like_callback);
}

这样,page_like_scope可以访问$ scope。

这有点像意大利面,所以如果你想要更好的解决方案,你可能需要提供更多的代码。

相关问题