【问题标题】:Angular passing parameter to a function角度传递参数给函数
【发布时间】:2014-09-16 00:19:38
【问题描述】:

当我在 ng-click 中将 a 参数传递给 getActiveId 函数时

<span class="col ion-ios7-heart-outline center" ng- click="getActiveId({{activeSlide.selected}})">

它的值在控制器中变为零,并在检查元素测试后传入正确的值

<span class="col ion-ios7-heart-outline center ng-binding" ng-click="getActiveId(1)"> 1:</span>

【问题讨论】:

  • 试试ng-click="getActiveId(activeSlide.selected)",如果click前面的空格也在实际代码中。

标签: javascript jquery html css angularjs


【解决方案1】:

您需要删除参数周围的花括号。

以下是您应该如何将参数传递给函数,或者在任何情况下,如何调用函数或调用指令属性内的作用域对象:

    <span class="col ion-ios7-heart-outline center" ng-click="getActiveId(activeSlide.selected)">

更新

要进一步详细说明为什么必须去掉双花括号... 当您想将语句视为表达式时使用这些。当涉及到指令的属性时,这些已经是表达式,所以你不能使用双花括号。有意义吗?

有时您会在指令的属性中找到单个花括号,当您想要将内联 javascript 对象作为参数传递时使用它。你会经常在 ng-style 指令中看到这一点:

    <div ng-style="{color:red}">

【讨论】:

    【解决方案2】:

    ng-click 和所有原生的 angularjs 指令(ng-click - ng-model - ng-option ,...) 他们都将接受没有两个花括号的表达式。

    所以你必须从你的 ng-click 内部消除这个:{{}} 像这样:

         <span ng-click="getActiveId(activeSlide.selected)">
    

    但是请注意,如果您编写自己的新指令,并且如果您想将任何表达式传入其中,则必须像这样使用 curleyBraces:

        in your controller: 
    
        $scope.color="blue";
    
        in your html :
    
       <span turnToThisColor="{{color}}"></span>
    
       // This is a directive that will turn this span color , blue 
    

    【讨论】:

    • 请注意指令和指令属性必须遵循蛇形大小写约定,即如果您在指令中定义了 turnToThisColor 属性,则在标记上您将其称为 turn-to-this-color。后者也适用于指令名称。应使用
      在标记上调用名为 myDirective 的指令。
    • 另外...当您声称如果创建具有自定义属性的自定义指令必须使用大括号时,我相信您是不正确的。这是错误的,因为花括号不能与已经是表达式的内容一起使用。您的自定义属性 已经 是一个表达式,所以那里也没有花括号。
    • 我不确定你在说什么,但我确定在我的示例中我们必须使用 {{}} 将颜色值注入指令对吗?
    • 这取决于... turnToThisColor 是否被视为表达式?如果是,那么你必须去掉花括号。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签