2013-01-23 86 views
2

我有一個ng-repeat循環通過processes。我正在嘗試的是通過帶有選擇框的表單向當前的process添加一個新的block。但是,我的問題是我無法從控制器訪問循環內的模型。我想這是因爲在ng-repeat循環中創建了新的範圍。訪問ng-repeat內部的模型

我仍然無法找到從控制器訪問模型的方法。這裏是html和javascript代碼段,可以讓你更好地理解問題。

<div class="container" ng-controller="ProcessCtrl"> 
    <div class="process" ng-repeat="process in processes"> 
     <form class="form-inline" ng-submit="addBlock($index)"> 
      <select ng-model="blockType"> 
       <option value="1">type1</option> 
       <option value="2">type2</option> 
       <option value="3">type3</option> 
      </select> 
      <button type="submit">add</button> 
     </form> 
    </div> 
</div> 

angularjs控制器

function ProcessCtrl($scope, $filter) { 
    //... 

    $scope.addBlock = function(index) { 
     alert($scope.blockType); // undefined 
     $scope.processes[index].blocks.push({type: $scope.blockType}); 
    }; 
} 

回答

4

是的,問題是,父母範圍無法訪問由NG-重複創建的子領域。

修改addBlock也通過了blockType:

ng-submit="addBlock($index, blockType)" 
+0

是否有通過了「blockType」特定的語法?或者訪問控制器中的子範圍的特定命令? – blnc

+1

@railrailrail,沒有特別的語法。函數'addBlock()'將得到'blockType'值/對象引用/不管它是什麼。你不能使用內部的'$$ ...'變量從控制器的'addBlock()'方法訪問子範圍 - 我不會推薦這樣做。 –

+0

現在工作,謝謝。我試圖通過$範圍仍然訪問它。 – blnc