打破ng-repeat中的字符数组并将每个char设置为自己的输入标记

时间:2015-02-12 20:07:43

标签: javascript angularjs

我是角色新手,正在寻找一种方法来获取表格中的每个名称,并以每个字母出现在其自己的<input>标签中的方式打破名称。因此,如果表格单元格包含名称&#34; Dave&#34;,并且用户点击了&#39; D&#39;,则仅包含此字母的输入标记为&#34;已选择&#34;。 这是行和表格单元格:

<tr ng-repeat="name in data">
    <td class="name"><input type="text" ng-model="user_name"></td>
</tr>

请提供任何帮助或指导?

更新

我真正拥有它的两个ng-repeat用于创建表格。该表有3列:user_name,script_name和cron_format。我希望最终用户能够更改的唯一部分是cron格式,但我想以一种方式打破cron_format,如果用户点击了&#34;分钟&#34;值,该值将是唯一标记的而不是所有cron_format ... 这是表:

<tbody ng-repeat="(user_id,row) in data">
<tr ng-repeat="(script_id, cron_format) in row" ng-init="oldCron = cron_format">
    <td class="userName">{{user(user_id)}}</td>
    <td class="scriptName">{{script(script_id)}}</td>
    <td class="cronFormat">
        <input type="text"  ng-model="cron_format" ng-blur="saveCron(user_id,script_id,cron_format,oldCron)"/></td>
    </td>
</tr>
</tbody> 

1 个答案:

答案 0 :(得分:0)

这是一个更完整的实现。您的数据来自范围对象$scope.data。此对象包含一个对象数组,表示“人员”,其中包含“名称”的键。此实现包括范围函数$scope.letters,它将名称字符串分解为各自的单个字符。

JSFIDDLE DEMO

HTML:

<div ng-app="myApp">
    <div ng-controller="MyCtrl">
        <table>
            <tr ng-repeat="person in data">
                <td class="name">
                    <input type="text" ng-repeat="letter in letters(person.name) track by $index" value="{{letter}}">
                </td>
            </tr>
        </table>
    </div>   
</div>

JavaScript的:

var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', ['$scope', function ($scope) {

    $scope.data = [
        {name:'Jim'},
        {name:'Dave'},
        {name:'Chelsea'}
    ];

    $scope.letters = function(rawname) {
        var lettersarray = rawname.split('');
        return lettersarray;
    };

}]);

*注意,任何包含重复字符的名称都需要track by $index(例如'Bill')