Javascript 如何从执行条带集成的控制器获取DOM元素?

Javascript 如何从执行条带集成的控制器获取DOM元素?,javascript,jquery,html,css,angularjs,Javascript,Jquery,Html,Css,Angularjs,嗨,我正在尝试在AngularJS应用程序中实现Stripe示例,我有一个初始化器,它调用一个名为initStripe的函数;这与条带示例相同: function initStripe() { $scope.stripe = Stripe('pk_test_6pRNasdwwehFeQd4XMUh'); $scope.elements = $scope.stripe.elements(); $scope.style = { base: {

嗨,我正在尝试在AngularJS应用程序中实现Stripe示例,我有一个初始化器,它调用一个名为initStripe的函数;这与条带示例相同:

function initStripe()
{
    $scope.stripe = Stripe('pk_test_6pRNasdwwehFeQd4XMUh');
    $scope.elements = $scope.stripe.elements();
    $scope.style = {
        base: {
            color: '#32325d',
            lineHeight: '18px',
            fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
            fontSmoothing: 'antialiased',
            fontSize: '16px',
            '::placeholder': {
                color: '#aab7c4'
            }
        },
        invalid: {
            color: '#fa755a',
            iconColor: '#fa755a'
        }
    };

    $scope.card = $scope.elements.create('card', {style: $scope.style});
    //console.log( document.getElementById('body') );
    $scope.card.mount('#card-element');
}
问题出在最后一条指令$scope.card.mount'card-element';,这里我得到了这个错误:

您指定的选择器卡元素不适用于任何DOM 当前在页面上的元素

通过测试,我可以检查移动position的HTML代码是否有效,但在我需要的div中不起作用

<body>
<!-- here works -->
   <div ng-if="currentStep == 3">
    <!-- here doesn't works -->
   </div>
</body>
HTML与Stripe网站示例相同:

function initStripe()
{
    $scope.stripe = Stripe('pk_test_6pRNasdwwehFeQd4XMUh');
    $scope.elements = $scope.stripe.elements();
    $scope.style = {
        base: {
            color: '#32325d',
            lineHeight: '18px',
            fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
            fontSmoothing: 'antialiased',
            fontSize: '16px',
            '::placeholder': {
                color: '#aab7c4'
            }
        },
        invalid: {
            color: '#fa755a',
            iconColor: '#fa755a'
        }
    };

    $scope.card = $scope.elements.create('card', {style: $scope.style});
    //console.log( document.getElementById('body') );
    $scope.card.mount('#card-element');
}

因此,在angularjs中有两种不同的隐藏和显示div的方法,ng if和ng show或ng hide。如果将ng If更改为ng show,则逻辑可以保持不变,但应该可以工作。解释如下

ng if的工作原理是,如果计算结果为false,则从DOM中完全删除元素和所有子元素。这意味着,如果计算结果为false,则任何类型的元素选择器在尝试查找ng内部的任何内容时都将失败

如果计算为隐藏,则使用“显示:隐藏”来显示和隐藏工作。这允许您仍然使用图元选择器选择它们,但将它们隐藏起来以防显示


在您看到的问题中,它正在查找ng if中的元素,由于ng if的计算结果为false,因此找不到该元素。

因此,在angularjs中有两种不同的隐藏和显示div的方法,ng if和ng show或ng hide。如果将ng If更改为ng show,则逻辑可以保持不变,但应该可以工作。解释如下

ng if的工作原理是,如果计算结果为false,则从DOM中完全删除元素和所有子元素。这意味着,如果计算结果为false,则任何类型的元素选择器在尝试查找ng内部的任何内容时都将失败

如果计算为隐藏,则使用“显示:隐藏”来显示和隐藏工作。这允许您仍然使用图元选择器选择它们,但将它们隐藏起来以防显示


在您看到的问题中,它正在查找ng if中的元素,由于ng if的计算结果为false,因此找不到该元素。

回答得很好!真的,我知道区别,但我从来没有想过这是原因。回答得好!真的,我知道区别,但我从来没有想过这是原因。