代码之家  ›  专栏  ›  技术社区  ›  sameera207

Angularjs中未定义$scope

  •  0
  • sameera207  · 技术社区  · 10 年前

    我正在创建一个用于学习的Angular应用程序(我对Angular都是新手),目前还停留在这一点上。

    以下是我的角度控制器

    cookingPad.controller('RecipeCreateController', function($scope, $http) {
    
      $scope.recipeSave = function($scope, $http){
        //code
      }; 
    
    });
    

    以下是我的表格

    <form id="signup-form_id" ng-submit="recipeSave()">
      //some html
      <input type="text" name="name" ng-model="recipeFormData.name" id="name" class="form-control input-lg no-border-radius" placeholder="Name">
      // some more html
      <button class="btn btn-lg btn-success" id="save1" type="submit"><i class="fa fa-save"></i> Save</button>
    </form>
    

    因此,当我在文本框中输入内容并单击 save 它位于 recipeSave 作用但当我检查 $scope 变量,它显示为

    $scope undefined

    原因可能是什么?我的Angular作品中的其他内容都是在Angular 1.2.4中,我发现了几个SO问题,但都不适合我。

    2 回复  |  直到 7 年前
        1
  •  3
  •   Peter Lyons    10 年前

    不要在中重新声明控制器参数 recipeSave :

    $scope.recipeSave = function() {
    

    做出改变,事情就会开始运转。您的模板正在显式调用 recipeSave() 没有参数,并且无论如何都希望通过闭包访问控制器参数,这会很好。

        2
  •  1
  •   HeberLZ    10 年前

    这是因为recipeSave方法具有$scope和$http作为参数。依赖注入在控制器/服务/过滤器等级别上工作,来自不同范围的属性如recipeSave无法解决依赖注入。

    换句话说,在视图中,执行recipeSave函数时没有传递参数,因此该函数未定义为两个参数的值。

    干杯