Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Angular.js:用户未选中复选框,但我需要更改_Html_Angularjs_Checkbox_Angularjs Ng Change - Fatal编程技术网

Html Angular.js:用户未选中复选框,但我需要更改

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> 地方的 插件生成

我有一个自定义jquery插件,它将隐藏真实的复选框,并显示一个增强的组件,而不是真实的组件

对于此代码

<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')
});