0

我正在使用基于this jsfiddle中的一个角度复选框过滤器(来自另一个问题)。http://jsfiddle.net/rzgWr/502/

我不想使用默认复选框,所以我使用 jquery 将两个 div“链接”到复选框,如下所示:

var toggleVar = 0;
$("#check-1").bind('click', function() {
    if(toggleVar % 2 == 0) {
        $(".check-item:first-child input").prop('checked', true);
    }
    else {
        $(".check-item:first-child input").prop('checked', false);
    }
    toggleVar++;
});
});

我的 jquery 可以与 html 一起正常工作并选中该框,但是 angular 模型没有检测到更改并且无法“刷新”本身(摘要?)以更新过滤后的输出(有关上下文,请参见 jsfiddle)。

我需要添加什么来确保角度模型能够检测到点击,或者检测到复选框状态中 jquery 所做的更改?我是否将更改写入 jquery 文件或角度控制器?

我知道使用 jquery 和 angular 会很麻烦,所以如果有一个 angular-only 选项,请赐教。

4

1 回答 1

1

在具体示例中,如果我正确地实现了目标,所有必须触发复选框的代码都可以放在label. 这样复选框会自动选中

<label><input type="checkbox" ng-model="usePants[pants]"/><b>{{pants}}</b></label>

如果“触发” div 更加断开连接,一种更通用的方法是更新内部的数据字段本身ng-click(例如usePants[pants] = !usePants[pants])。唯一需要注意的是,您不能绑定到包含的 div 或粗体元素,除非您停止传播。否则,单击复选框本身会双重触发。这里的另一种选择是使用额外的跨度或移动b元素,使其不包含输入。

<input type="checkbox" ng-model="usePants[pants]"/><b ng-click="usePants[pants]= !usePants[pants]">{{pants}}</b>

小提琴

当然,我可能完全误解了这个问题。这是假设单击复选框旁边的文本会更新复选框并触发 angularisjs 过滤。

于 2015-09-14T16:52:26.097 回答