按钮按钮中的功能参数相同

时间:2015-11-02 16:25:18

标签: javascript angularjs ionic

我有两个按钮使用相同的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>,诅咒你哎呀!

2 个答案:

答案 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>