2016-11-09 50 views
0

也许我完全不懂Angular。我的问题是:AngularJS:TypeError:无法设置属性undefined

在UI我有以下几点:

<input ng-model="$ctrl.newItem.action" id="action" name="action" class="form-control"/> 

所以action元素绑定到角模型两方面。

现在,在UI的但具有相同的控制器,另一部分我称之为编辑方法:

$ctrl.updateItem = function (item) { 
      $ctrl.newItem.action = item.action; 
      //... 

我想当前正在编辑元素的$ctrl.newItem.action表演动作BU相反,我看到的错误控制台:

TypeError: Cannot set property of undefined 

为什么$ctrl.newItem.action未定义?

+1

尝试在HTML视图中删除$ ctrl – RL89

+1

提示:它不会抱怨'$ ctrl.newItem.action'未定义,它抱怨'$ ctrl.newItem'未定义。 – Icycool

+0

如果我们看到您要实现的代码示例,那么您在哪里编写了'$ ctrl.newItem.action = item.action;'?控制器功能里面? – Dabbas

回答

1

角模型不确定,直到你在控制器定义它或输入类型的东西

试试这个

$ctrl.updateItem = function (item) { 
      $ctrl.newItem = {action: item.action}; 
      //... 
0

从我的理解是,你试图访问控制器中的变量,但你会得到一个错误,该变量是未定义的,所以如果是这样的话,你必须确保以下几点:

-in认为不添加服务或控制器名称或其他任何东西,只是变量名称,前(HTML代码):

<input ng-model="newItem.action" id="action" name="action" class="form-control"/> 

- 确保ü在控制器中添加$范围的服务,并附加变量名称,将其EX(JS代码):

app.controller(function($scope){ 
$scope.newItem=... 
}); 

-the变量newItem应附范围在控制器这样的服务:

$scope.newItem = {action:"awesomeAction"}; 

或至少: $scope.newItem = {};(在这种情况下angularjs将创建参数“.action”部门自动化cally)

相关问题