角度指令不会更新布尔值
Angular directive won't update boolean
我的控制器中有一个函数,可以切换一个类,并将值$scope.logocollapsed
更改为 true 以隐藏元素。当我使用 ng-click
调用它按设计工作的函数时,将添加类并将值设置为 true。
我发出了切换类的指令,并更改了$scope.logocollapsed
的值,这是在滚动事件上调用的,它切换了类,但是它不会更改$scope.logocollapsed
的值
这是我的指示:
.directive('scrollspy', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var raw = element[0];
console.log('loading directive');
element.bind( 'scroll', function() {
//console.log(raw.scrollTop);
if (! $('.sidebar-menu').hasClass('collapsed')){
if (raw.scrollTop > 200) {
scope.menuClose();
}
}
});
}
};
})
这是我的控制器内部的样子。
$scope.menuClose = function(bool) {
if(! $('.sidebar').hasClass('collapsed')) {
$('.sidebar-menu').addClass('collapsed');
$scope.logocollapsed == true;
}
};
同样,我不确定为什么我的指令能够运行 menuClose()
函数并处理类,但它不会将值更新为 false。
我感谢任何建议
你有几个问题。
-
如另一个答案中所述,您正在进行相等比较而不是分配@
$scope.logocollapsed == true;
-
必须执行
scope.$apply
才能在滚动事件中手动触发摘要周期。element.bind( 'scroll', function() { if (! $('.sidebar-menu').hasClass('collapsed')){ if (raw.scrollTop > 200) { scope.menuClose(); scope.$apply(); } } });
-
在控制器中执行 DOM 操作或显式 DOM 访问不被认为是一种好的做法。您可能应该将该代码
if(! $('.sidebar').hasClass('collapsed')) {...
移动到指令链接器函数。并让控制器功能仅设置标志。
一看,问题似乎在$scope.menuClose
之内。
这:
$scope.logocollapsed == true;
应该是这样的:
$scope.logocollapsed = true;
==
是比较运算符,而 =
是赋值运算符。
- 如何从javascript/jquery中的复选框中获取布尔值
- 输入字段将't获取更新的值
- KendoUI网格行过滤器,带有布尔值下拉列表
- php布尔值's小写AND大写和数字布尔值'可以接受
- select中布尔值的Angularjs ng值不起作用
- 由于布尔值的变化,Django视图中的字符串格式不正确
- 如何动态更新输入值属性
- 将字符串转换为数组使用javascript更新一个值并返回一个字符串
- MeteorJs Alded autoform,如何从布尔值复选框中获得所需值
- 将字符串动态转换为布尔值
- 将布尔值存储在隐藏字段中以进行表单处理
- 类型错误:布尔值不是 Angular 中登录函数的函数
- 使用f:ajax-onevent时不更新布尔值
- 角度指令不会更新布尔值
- MVC 5 Razor 中的引导模式:当用户单击模式中的继续按钮时,如何将模型布尔值更新为 false
- 在我的脚本中基于布尔值更新DOM时遇到问题
- Ng显示当页面上有多个控制器的布尔值发生变化时不更新
- ng-repeat绑定集合,使用选项卡过滤布尔值,当我更新集合时,过滤器不会重新应用
- 将声明的null变量更新为布尔值
- Mongoose findByIdAndUpdate 方法,用于切换和更新数据库中的布尔值