javascript - 如何通过 ng-click 将 $scope 传递给 Controller ​​?

标签 javascript angularjs angularjs-scope

所以我有以下模板:

 <div class="book-thumbs">
   <div class="book-pic" ng-repeat="img in book.images">
     <img ng-src="{{img}}" ng-click="vm.setImage(img)">
   </div>
 </div>

在 Controller 中,我尝试调用 setImage(),但收到错误:$scope 未定义。

class BookController {
  constructor($scope, $stateParams, $http) {
    this.name = 'book';
    $scope.bookId = $stateParams.bookId;
    this.getBookInfo($http, $stateParams, $scope);
  }

  getBookInfo($http, $stateParams, $scope) {
    $http.get('books/' + $stateParams.bookId + '.json').success(function(data) {
      $scope.book = data;
      $scope.mainImageUrl = data.images[0];
    });
  }

  setImage(imageUrl) {
    $scope.mainImageUrl = imageUrl;
  }
}

BookController.$inject = ['$scope', '$stateParams', '$http'];
export default BookController;

我该如何解决这个问题?如果我尝试将 $scope 添加为 setImage($scope, img) 中的参数,则不会发生任何变化。谢谢

最佳答案

使用构造函数中的 this 变量更改 Controller 中的访问和分配依赖项的方式。

Class BookController {
  constructor($scope, $stateParams, $http) {
    this.name = 'book';
    //Add
    this.$scope = $scope;
    this.$stateParams = $stateParams;
    this.$http = $http;

    this.$scope.bookId = $stateParams.bookId;
    this.getBookInfo();
  }

  getBookInfo() {
    var that = this;
    this.$http.get('books/' + this.$stateParams.bookId + '.json').success(function(data) {
      that.$scope.book = data;
      that.$scope.mainImageUrl = data.images[0];
    });
  }

  setImage(imageUrl) {
    this.$scope.mainImageUrl = imageUrl;
  }
}

BookController.$inject = ['$scope', '$stateParams', '$http'];
export default BookController;

关于javascript - 如何通过 ng-click 将 $scope 传递给 Controller ​​?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37730114/

相关文章:

javascript - 如何将 Formik Field 渲染为 textarea + styled-components?

javascript - 如何创建像指标一样的循环进度(饼图)

javascript - 通过多个复选框和属性问题进行 Angular 过滤

AngularJS 密码强度验证

javascript - 这段 JavaScript 代码的正确语法是什么?

javascript - 如何在angularjs中将对象值重置为null?

ruby-on-rails - 获取 ActionController::RoutingError(当尝试使用 AngularJS 将数据发布到 Rails 服务器时,没有路由匹配 [OPTIONS] "/users"

javascript - AngularJS - 如何根据下拉选项更改键值

javascript - Controller 不是函数,在全局定义 Controller 时未定义

javascript - 如何使用 jQuery 触发点击事件