我无法修改由ng repeat生成的文本框。由于父/子作用域的缘故,它也有点复杂。
链接:http://jsfiddle.net/tzXn2/
剧本:

function ConfigController($scope)
{
    $scope.config = {"key1":["a","b","c"]};
}
function SettingController($scope)
{
    var configKey = null;
    function update() {
        $scope.items = $scope.config[configKey];
    }
    $scope.init = function(key) {
        configKey = key;
        update();
    };
    $scope.$watch('config', update, true);
}

标记:
<div ng-app ng-controller="ConfigController">
    Config: {{config}}
    <div ng-controller="SettingController" ng-init="init('key1')">
        Items: {{items}}
        <div ng-repeat="item in items">
            <input ng-model="item" type="text"/>
        </div>
    </div>
</div>

最佳答案

与绑定到原语不同,绑定到对象具有所需的行为。

 $scope.config = {"key1":[{value : "a"},{value:"b"},{value : "c"}]};

绑定将是
<div ng-repeat="item in items">
    <input ng-model="item.value" type="text"/>
</div>

下面的链接解释了为什么这样做
Do not bind to primitives
阿泰姆·安德列夫对另一个问题的回答很好地解释了这种行为。
复制相关部分:
示例“直接绑定到每个元素”的工作原理
角度1.0.3:
在输入中输入字母“f”;
ngModelController更改项作用域的模型(names数组未更改)=>name=='Samf',names==['Sam','Harry','Sally'];
$digest循环已启动;
ngRepeat将项作用域('Samf')中的模型值替换为未更改名称数组('Sam')中的值;
ngModelController使用实际模型值(“Sam”)重新提交输入。

关于javascript - 无法修改ng-repeat生成的文本框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18351910/

10-12 22:22