$ scope在Angularjs中未定义

时间:2014-08-29 00:06:07

标签: angularjs scope angularjs-scope

我正在创建一个用于学习的Angular应用程序(我是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功能。但是当我使用chrome dev工具检查$scope变量时,它会将其显示为

$scope undefined

可能是什么原因?我的Angular中的其他所有内容都在Angular 1.2.4上工作,我发现了几个SO问题,但它们都不适用于我。

2 个答案:

答案 0 :(得分:3)

请勿在{{1​​}}中重新声明控制器参数:

recipeSave

做出改变,事情就应该开始了。您的模板显式调用$scope.recipeSave = function() { 没有参数,并且您希望通过闭包访问您的控制器参数,这将正常工作。

答案 1 :(得分:1)

这是因为recipeSave方法有$ scope和$ http作为参数。依赖注入在Controller / Service / Filter / etc级别上工作,属性来自不同的范围,因为recipeSave不会解决依赖注入。

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

干杯