ng-repeat内的AngularJS指令不传递评估值

时间:2015-09-14 02:24:57

标签: javascript html angularjs angularjs-ng-repeat angularjs-ng-click

两天前我刚刚开始学习AngularJS,所以如果你认为我没有以Angular的方式处理这个问题,那么请指导我。 所以下面的代码是我的HTML的一部分,它有ng-repeat指令

<div class="row" data-ng-repeat="button in buttons" ng-if="$index % 3 == 0">
   <div class="col-lg-3 col-lg-offset-1">
      <button class="btn btn-default button-width" data-ng-click="my_func('{{buttons[$index].desc}}')">{{buttons[$index].name}}</button>
   </div>
   <div class="col-lg-3 col-lg-offset-1">
      <button class="btn btn-default button-width" data-ng-click="my_func('{{buttons[$index + 1].desc}}')">{{buttons[$index + 1].name}}</button>
   </div>
   <div class="col-lg-3 col-lg-offset-1">
      <button class="btn btn-default button-width" data-ng-click="my_func('{{buttons[$index + 2].desc}}')">{{buttons[$index + 2].name}}</button>
   </div>
</div>

以下代码是我的Angular Controller,它将值传递给HTML中的ng-repeat指令,然后HTML中的ng-click指令调用控制器中的my_func函数。

remote_app.controller("remote-controller", function($scope, $http) {
    $scope.buttons = [{
        "desc": "OFF_V1",
        "name": "OFF",
    }, {
        "desc": " ",
        "name": " ",
    }, {
        "desc": "SOURCE_1",
        "name": "SOURCE",
    }];
    $scope.my_func = function(command) {
        $http.get("http://localhost:1337?comm=" + command).success(function() {
            $scope.result = "Sent to server - " + command;
        });
    };
})

现在,当呈现HTML页面时,这会显示数组中的值,但是当我单击调用ng-click指令的按钮并依次调用my_func时,发送到服务器的值不是{的呈现值{1}}但是发送的值是my_func('OFF_V1')。我试图找到一个解决方案,但现在像$ apply和$ digest这样的东西超出了我对Angular的理解,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

如果您在没有''的情况下通过,那么您将获得值,因为angular会将其表达式解析为值。但在使用'' angular后会将其视为字符串然后停止解析。如果您想发送值,请尝试使用'',但建议不要传递角度表达式({{}}),否则将传递值

试试这个

data-ng-click="my_func(buttons[$index].desc)"