JS - 创建并传递一个函数,该函数将在另一个范围的上下文中进行评估

时间:2016-09-20 05:30:03

标签: javascript angularjs

我正在使用角度和自举游览,我想尝试将对象保存在自己的区域中,因此它们不必存储在控制器中。我想在服务中存储一个对象,但它也有对象中的函数。当那些得到“eval()”时,它们会在服务范围内触发,而不是通过它们的控制器。具体来说,“$ scope”在服务中没有上下文,但在控制器中没有。

下面是代码示例:

var returnedObj = {
    steps: [
        {
            element: '#newProduct',
            title: 'Create Products',
            placement: 'bottom',
            content: 'Create new products here'
        }
    ],
    backdrop: true,
    //The function that I want to interact with the $scope through the controller
    onShow: function (tour) {
        $scope.tourDisabled = true;
        $scope.filter.availability = 'all';
        $scope.filter.gallery = 'Show All';
        $scope.updateFilter();
    }
};

我已经尝试过JSON.stringify和JSON.parse,但它不适用于函数。这只是无望吗?

除了$ rootScope,这可能吗?

1 个答案:

答案 0 :(得分:1)

您应该传递$scope或您需要的任何上下文作为您的函数的参数:

onShow: function (tour, $scope) {
        $scope.tourDisabled = true;
        $scope.filter.availability = 'all';
        $scope.filter.gallery = 'Show All';
        $scope.updateFilter();