如何将当前范围以角度传递给Controller函数?

时间:2015-10-19 07:12:28

标签: angularjs angularjs-scope

我正在尝试做类似下面的事情:

  <ul>
       <li ng-click="GetBookDetails({{book.id}})" ng-repeat="book in books">{{book.Title}}</li>                        
  </ul>

以下是控制器:

 angular.module('app')
.controller("Books", ["$scope", "$http", function ($scope, $http) {

    $http.get(url).success(function (data) {
        $scope.books = data.items;
    })

    $scope.GetBookDetails = function (bookId) {
        $http.get(url + '/' + bookId).success(function (data) {
            $scope.bookDetails = data;
        })
    }
}]);

但ng-click =“GetBookDetails({{book.id}})”这给出了无效的密钥错误。 你能帮帮我吗?

2 个答案:

答案 0 :(得分:2)

尝试ng-click="GetBookDetails(book.id)"

答案 1 :(得分:0)

ng-click="GetBookDetails(book.id)"

您不得在角度表达式中使用插值。

您还应该尊重命名约定,并将您的功能重命名为getBookDetails(),将Title属性重命名为title。如果你不得不怀疑,每次使用函数或属性时,如果它以小写字母开头,你将会失去很多时间并引入错误。

最后,不推荐使用$ http promises上的success()和error()回调。您应该使用then(),以及任何其他承诺:

$http.get(url).then(function (response) {
    $scope.books = response.data.items;
})