我有两个按钮使用相同的ng-click和不同的参数。
<label class="item item-input">
<button ng-click="takePicture(true)">Save Settings</button>
<button ng-click="takePicture(false)">Choose from Gallery</button>
</label>
无论我做什么,按钮都会传递与第一个函数调用中相同的参数。
使用简单的控制器功能进行测试,记录相同的参数。在这种情况下,两者都是true
。
$scope.takePicture = function(my_param) {
console.log(my_param);
}
这些似乎只发生在Ionic中,而不是标准的Angular。这是一个工作示例的CodePen。
http://codepen.io/anon/pen/JYBKVQ
编辑:根据以下解决方案,我在上面的代码摘录中包含了问题的根源。诅咒你<label>
,诅咒你哎呀!
答案 0 :(得分:4)
将按钮嵌套在标签内是一个问题。如果您删除标签,它会按预期工作:http://codepen.io/anon/pen/ojMzLj
<div class="list list-inset">
<h3>Profile Picture</h3>
<button class="button button-block button-calm" ng-click="takePicture(true)">Save Settings</button>
<button class="button button-block button-calm" ng-click="takePicture(false)">Choose from Gallery</button>
<label class="item item-input">
<input type="text" placeholder="Circle Color" ng-model="data.color">
</label>
<label class="item item-input">
<input type="text" placeholder="Stroke Color" ng-model="data.stroke">
</label>
</div>
答案 1 :(得分:1)
确实问题在于@DenimChicken指出的标签,其他标签按预期工作。
我看了一眼:http://www.w3schools.com/tags/tag_label.asp
我还测试了其他一些案例,事实证明,标签是将点击发送到它找到的第一个按钮,实际上它总是调用第一次点击,无论你点击哪一个。标签找到第一个难以处理的元素,并阻止其他事件传播。这可以通过&#34; for&#34;来改变。属性。
当标签成为目标时,会发生这种情况,总是会点击目标。
<label for="false" >
<h3>Profile Picture</h3>
<button class="button button-block button-calm" ng-click="takePicture(true)">Save Settings</button>
<button id="false" class="button button-block button-calm" ng-click="takePicture(false)">Choose from Gallery</button>
</label>