Javascript 如何从执行条带集成的控制器获取DOM元素?
嗨,我正在尝试在AngularJS应用程序中实现Stripe示例,我有一个初始化器,它调用一个名为initStripe的函数;这与条带示例相同: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: {
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,因此找不到该元素。回答得很好!真的,我知道区别,但我从来没有想过这是原因。回答得好!真的,我知道区别,但我从来没有想过这是原因。