角度,ng模型和输入问题

时间:2013-08-06 17:50:27

标签: javascript angularjs

编辑:乔纳森的建议奏效了。我尝试使用版本1.1.5并且为重复的空字符串抛出“不允许在转发器中重复”错误。我下班回家后会接受一个答案,这个浏览器没有太多启用。

我在输入标签中使用ng-model时遇到问题。我已经设置了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”?还是我做了一些非常愚蠢的事情?

3 个答案:

答案 0 :(得分:1)

至于使用1.1.5处理 Duplicates in a repeater are not allowed ,有一个简单的解决方法。几周前切换到1.1.5时,我遇到了同样的问题。

track by $ indexng-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 blogGitHub上阅读有关此问题Angular Google Group的一些内容。

答案 1 :(得分:0)

有时,角度无法绑定到非对象。因此,快速解决方案是制作您的选项对象。:

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

然后

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

我认为这个特殊问题在以后的版本中得到了解决,所以请尝试使用最新版本的angular,如果它仍然不起作用,我会在github上为它提出问题。

答案 2 :(得分:0)

如果你改变了

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

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

它似乎有效,但现在你有焦点改变的问题。