2013-08-06 123 views
0

編輯:喬納森的建議工作。我嘗試使用版本1.1.5,並引發重複空字符串「不允許在重複中重複」錯誤。當我下班回家時,我會接受一個答案,這個瀏覽器沒有太多啓用。角度,ng模型和輸入問題

我有一個輸入標籤採用NG-模型的問題。我已經建立了一個包含我的代碼的JSFiddle。當您單擊「添加」,然後嘗試改變下面的輸入框中的一個,就會出現問題。輸入拒絕讓你輸入它!

HTML:

<div ng-class="{selected: selectedPart==$index, cell: selectedPart!=$index}" 
    ng-click="selectPart($index)" ng-repeat="part in parts"> 
     <textarea class="prompt" ng-model='part.wording'></textarea> 
     <hr> 
     <span class="numbering" ng-repeat="option in part.options"> 
      {{ $index+1 }}). 
      <textarea class="option" ng-model="option"></textarea> 
      <br> 
     </span> 
</div> 

JS:

StaticEX.controller('mainController', function($scope) { 
    $scope.parts = []; 
    $scope.ps = "Problem Statement"; 
    $scope.selectedPart = null; 


    $scope.newPart = function() { 
     return {"wording": "Prompt", 
       "options": ["", "", "", ""]} 
    }; 

    $scope.addPart = function() { 
     $scope.parts.push($scope.newPart()); 
    }; 

這是我如何參照 「選項」 的問題嗎?這是一個爲「ng-repeat」指令創建的僞變量,而實際上並沒有鏈接到「$ scope」?還是我在做一些深刻的愚蠢?

回答

1

至於處理Duplicates in a repeater are not allowed與1.1.5,有一個簡單的修復。幾周前切換到1.1.5時,我遇到了同樣的問題。

track by $ index需要爲ng-repeat

<span class="numbering" ng-repeat="option in part.options track by $index"> 
    {{ $index+1 }}). 
    <textarea class="option" ng-model="option"></textarea> 
    <br> 
</span> 

你可以閱讀關於這個問題at this blog一點點表達的一部分,對GitHub,或Angular Google Group

0

有時角有麻煩結合非對象。因此,快速的解決方案是讓你的選擇對象:

$scope.newPart = function() { 
    return {"wording": "Prompt", 
      "options": [{text:""}, {text:""}, {text:""}, {text:""}]} 
}; 

然後

<input class="option" ng-model="option.text"> 

我想這個特殊的問題在以後的版本,雖然解決了,所以用的角最新版本的嘗試,如果它仍然不起作用,我會在github上爲它提出問題。

0

如果更改

<input class="option" ng-model="option"> 

<input class="option" ng-model="part.options[$index]"> 

看來工作,但現在你有重點改變的問題。