使用angularjs表达式复选框

时间:2015-02-18 20:51:18

标签: javascript angularjs

阅读ng-checked属性我意识到我们可以使用angular expressions确定是否选中了复选框。

我有图像和日期。我想创建一个表格,表示哪个图像在特定日期处于活动状态。这个sql fiddle应该可以帮助你理解我的意思。

在小提琴中,选中四个复选框,但不应检查其中一个(与第一个图像对应的那个和' feb'日期),因为' feb&#39 ;不在第一张图片的日期(请参阅下面的$scope定义)

我的问题是date = image.dates属性中的ng-checked表达式总是返回true,因此选中了四个复选框。

我可以使用哪种表达方式来验证特定日期是否在图片的定义日期?

我可以更改数据模型,因此如果将特定图像的日期更新为数组而不是字符串,请继续。

视图

<div ng-controller="MyCtrl">
    <table>
        <tr>
            <td style="width:80px;"></td>
            <td style="width:35px;" ng-repeat="date in dates">{{date}}</td>
        </tr>
        <tr ng-repeat="image in images">
            <td>{{image.name}}</td>
            <td ng-repeat="date in dates">
                <input ng-checked="date = image.dates" type="checkbox" />
            </td>
        </tr>
    </table>
</div>

应用

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

function MyCtrl($scope) {
    $scope.images = [
        {name:'Image 1',dates:'jan'},
        {name:'Image 2',dates:'jan,feb'}
    ];
    $scope.dates = [
        "jan",
        "feb"
    ];
}

1 个答案:

答案 0 :(得分:1)

您必须检查日期是否包含日期表达式。

这样的事情:

    <tr ng-repeat="image in images">
        <td>{{image.name}}</td>
        <td ng-repeat="date in dates">
            <input ng-checked="image.dates.indexOf(date) > -1" type="checkbox" />
        </td>
    </tr>