AngularJS:TypeError:无法设置undefined

时间:2016-11-09 13:12:20

标签: javascript angularjs controller

可能我完全不理解Angular。我的问题是:

在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未定义?

2 个答案:

答案 0 :(得分:1)

角度模型未定义,直到您在控制器中定义它或在输入中键入内容

尝试这个

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

答案 1 :(得分:0)

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

- 在视图中不要添加服务或控制器名称或其他任何内容,只需添加变量名称Ex(HTML CODE):

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

- 确保你在控制器中添加了$ scope服务,并将变量名称附加到它Ex(JS CODE):

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

- 变量newItem应该附加到控制器中的作用域服务,如下所示:

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

或至少: $scope.newItem = {};(在这种情况下,angularjs将自动创建参数&#34; .action&#34;