从两个表达式设置ng-checked值

时间:2014-04-02 12:27:32

标签: javascript angularjs

以下是我的控制器范围

$scope.all = [
    {'ID':'1','NAME':'BOB','BMW':1,'AUDI':'0'},
    {'ID':'2','NAME':'PETE','BMW':'0','AUDI':'1'}
];

$scope.cars = [
    {'ID':'1','CAR':'BMW'},
    {'ID':'2','CAR':'AUDI'}
];

这是我的观点

<table class="table">
    <thead>
        <tr>
            <th>Name</th>
            <th ng-repeat="c in cars">{{c.CAR}}</th>
        </tr>
    </thead>
    <tbody>
    <tr ng-repeat="u in all">
        <td>{{ u.NAME }}</td>
        <td ng-repeat="c in cars">
            <input type="checkbox" ng-checked="{{ u.c.CAR }}">
        </td>
    </tr>
    </tbody>
</table>

现在我想根据汽车ng-checked="{{ u.c.CAR }}"的值检查复选框,但我无法设置它。我在萤火虫中没有任何错误。 angularjs是否提供这样的表达?如果现在,还有什么其他解决方案?我希望它在视图中设置

更新:我应该这么做了。这是我的JSFIDDLE

5 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望将10解析为truefalse。你应该可以这样做:

<tr ng-repeat="u in all">
    <td>{{ u.NAME }}</td>
    <td ng-repeat="c in cars">
        <input type="checkbox" ng-checked="u[c.CAR] == 1">
    </td>
</tr>

*注意:您无需在{ }内插入ng-checked

这是updated fiddle

答案 1 :(得分:2)

是的,你的表达有点偏离:

ng-checked="u[c.car] == 1"

答案 2 :(得分:0)

也许你可以解决你的问题,重新审视你的重复,如果你写了像你一样的东西,而不是你所有的,你可以按照你想要的方式使用你的项目,无论如何看看这个角度ui ng-grid的模块,它有很多选项,它可以满足你的需求

@vishwakumar对你来说是一个笨蛋,你也需要下载css,以正确的方式设置行高,但这是一种解决你问题的方法,相信我,ng-网格可以解决除plunker以外的很多问题 编辑 我也把它放在支票上,如果你需要评论来理解plunker中的代码,请在答案的评论中写下来并且我会这样做

答案 3 :(得分:0)

你的表情有误。试试这个:

<tr ng-repeat="u in all">
    <td>{{ u.NAME }}</td>
    <td ng-repeat="c in cars">
        <input type="checkbox" ng-checked="u[c.CAR].toString() == '1'">
    </td>
</tr>

我还建议确保您的数据是所有字符串或所有整数,而不是两者的混合。

答案 4 :(得分:0)

那是你的答案。您的“所有”列表中都有一些la脚的报价!另外,您的ng-repeat模板写错了。

您的$ scope应该初始化为

    function DefaultCtrl($scope) {
        $scope.all = [
            {'ID':'1','NAME':'BOB','BMW':'1','AUDI':'0'},
            {'ID':'2','NAME':'PETE','BMW':'0','AUDI':'1'}
        ];

        $scope.cars = [
            {'ID':'1','CAR':'BMW'},
            {'ID':'2','CAR':'AUDI'}
        ];
    }

您的$ scope的DOM应该是

    <div ng-app="" ng-controller="DefaultCtrl">
        <table class="table">
        <thead>
            <tr>
                <th>NAME</th>
                <th ng-repeat="c in cars">{{c.CAR}}</th>
            </tr>
        </thead>
        <tbody>
        <tr ng-repeat="u in all">
            <td>{{ u.NAME }}</td>
            <td ng-repeat="c in u.BMW">
                <input type="checkbox" ng-checked="{{ c }}">
            <td ng-repeat="c in u.AUDI">
                <input type="checkbox" ng-checked="{{ c }}">
            </td>
            </td>
        </tr>
        </tbody>
    </table>    
    </div>

您的答案应为Click to see picture !!!