2016-11-09 132 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)

相關問題