Html Angular.js:用户未选中复选框,但我需要更改
我有一个自定义jquery插件,它将隐藏真实的复选框,并显示一个增强的组件,而不是真实的组件 对于此代码Html Angular.js:用户未选中复选框,但我需要更改,html,angularjs,checkbox,angularjs-ng-change,Html,Angularjs,Checkbox,Angularjs Ng Change,我有一个自定义jquery插件,它将隐藏真实的复选框,并显示一个增强的组件,而不是真实的组件 对于此代码 <label for="local"> <input type="checkbox" ng-model="value" ng-change="filterByCoursePlace('test')" name="local" id="local"><span>Local</span> </label> 地方的 插件生成
<label for="local">
<input type="checkbox" ng-model="value" ng-change="filterByCoursePlace('test')" name="local" id="local"><span>Local</span>
</label>
地方的
插件生成此代码(它在复选框顶部添加一个div)
地方的
大正方形是假的(显示给用户),小正方形是真的。
真正的复选框将对用户隐藏
问题是:当我点击真实的一个时,ng改变起作用,但当我点击虚假的一个时,ng改变不起作用,尽管真实的一个也被检查了 您可以对jQuery插件进行多少更改? 生成的代码有一个
ng click=“filterByCoursePlace('test')
,这就是为什么如果单击真实的代码就可以工作的原因。
最快的方法是删除每个ng更改
/ng单击
在控制器中添加一个手表
:
$scope.$watch('value', function(newVal, oldVal) {
filterByCoursePlace('test')
});
或者,如果您可以更改插件生成代码的方式,您可以将ng单击
添加到假复选框中,而不是真正的复选框中。
无论如何,如果您想在另一个函数(如“resetFilters”按钮)更改
值时触发filterByCoursePlace
,我将使用$scope.$watch
方式。我最终在假复选框的顶部显示了真实复选框,并使用css使其不可见(不透明度=0)
这不是一个完美的解决方案,但它确实有效。您是在使用实际的jQuery插件,还是在通过直接标记或指令模拟其功能?为什么需要隐藏真实的复选框并显示增强的组件而不是真实的组件。@NidhishKrishnan它是一个客户端requirement@Brocco我使用的是实际的jquery插件.f或者select和radio buttton,我对这个复选框没有问题,只是bug出现了。这看起来像是一个基本的jQuery插件,你考虑过在指令中复制逻辑吗?我尝试过这种方法($watch方法),同样的事情,如果我点击real复选框,ng modal
变量会被更新,如果我点击fake复选框,没有代码什么都不会发生,这有点困难;无论如何,我想问题在于如何将jQuery插件集成到angularjs中。关于如何使用简单指令实现这一点,有很多教程(比如:)。谢谢你的链接:)感谢你的帮助
$scope.$watch('value', function(newVal, oldVal) {
filterByCoursePlace('test')
});