我有一个双向数据绑定,它不会更改发送到指令的变量的值。
我的指令监视触发器,并将焦点集中在associates元素上(基于在SO处找到的代码):
app.directive('focusMe', function ($timeout) {
return {
scope: {
trigger: '=focusMe'
},
link: function (scope, element, attrs) {
scope.$watch('trigger', function(value) {
console.log("directive value: " + value);
console.log("directive start: " + scope.trigger);
if (value === true) {
$timeout(function () {
element[0].focus();
scope.trigger = false;
console.log("directive end: " + scope.trigger);
});
}
});
}
}
});
在HTML中,我将其称为:
<input type="text" ng-model="item.value" focus-me="focusInput" />
当我第一次触发它时,它可以工作-
因为focusInput
变量会切换其值。但是focusInput
在控制器范围内(指令外部)不会false
在指令完成时切换回原来的状态。
假设我了解false
应该发生的情况,则在致电时切换回应该发生的scope.trigger = false
情况。
缺少什么会导致双向绑定不将值推回传递给指令的变量?
更新01:
为了发布问题,我删除了一些代码。HTML实际上看起来像这样:
<input type="text" ng-model="item.value" focus-me="focusInput" ng-if="item.condition != 'matches' && item.condition != 'does not match'" />
如果该input
字段被隐藏,然后重新显示(基于ng- if
),则该指令将在第一次focusInput
更改时正确地给予焦点。之后,它将再次停止工作…除非重复执行隐藏/显示过程。
处理范围内的原始值(布尔值,整数等)时,您遇到的问题是一个常见问题。
我强烈建议阅读“ 了解范围”文章。(简短的答案:原语在指令的隔离范围中更改,并且不在父范围(即您的控制器范围)的链中寻找)。
至于如何解决您的情况,我建议使用点符号并将原始存储在对象中,然后将此对象绑定到指令:
scope: {
triggerObj: '=focusMe'
},
并确保您现在在指令中引用触发器scope.triggerObj.trigger
。
并在您的控制器中具有:
$scope.triggerObj = {};
$scope.triggerObj.trigger = true; //or false, what have you
拥有一个对象将确保双向绑定将起作用。如果有时间,请阅读上面的文章:)
问题内容: 我一直在尝试定义指令,以便可以根据字段的类型及其参数(存储在数据库中)以表格形式显示不同的“窗口小部件”。我需要对不同类型的场景做出反应,因此需要使用指令来处理布局。 在玩一些示例时,我想出了 kinda 可以工作的代码: HTML 指示 这似乎可行(尽管明显比* proper * angularJS变量绑定要慢),但我认为必须有更好的方法来做到这一点。谁能阐明这件事? 问题答案: 我
问题内容: 如果我有一个没有模板的AngularJS指令,并且希望它在当前作用域上设置一个属性,那么最好的方法是什么? 例如,计算按钮点击次数的指令: 使用伪指令将点击计数分配给双向属性中的表达式: 有一个更好的方法吗?从我所读的内容来看,孤立的作用域会过大,但是我需要一个子作用域吗?除了使用以外,还有没有更干净的方法可以写回指令属性中定义的范围变量。我只是觉得我很难过。 这里有完整的柱塞。 问题
问题内容: 更新 :在代码的另一部分中一定有些愚蠢。现在可以使用,因此bindToController语法很好。 我们正在使用AngularJS 1.4,它引入了在指令中使用bindToController的新方法。 经过大量的阅读(也许并不能理解所有内容),我们如下定义了指令: 从这样的另一个视图调用它: 先前已在视图控制器中定义: 像这样在指令模板中引用变量: 我们花了4小时试图弄清楚为什么我
本文向大家介绍深入理解Angularjs向指令传递数据双向绑定机制,包括了深入理解Angularjs向指令传递数据双向绑定机制的使用技巧和注意事项,需要的朋友参考一下 下面来先看一个简单例子 这个例子我用通俗的话来过一遍 1.使用隔离作用域 让DOM中的 ng-model="Url" ,这里暂且叫他'A' 与 指令中的 some-attr="Url" --> 'B' 形成双向绑定关系 经过上面的步
我正在用Eclipse Juno、WindowBuilder在Java7 SE上开发我的第一个JDialog,“摆动自动数据库”()。我很想测试自动数据绑定 我只在Eclipse数据绑定GUI的帮助下为类用户提供了一个编辑对话框。 “我的对话框”将打开,其中的文本字段包含来自用户实例的正确初始值。当我修改文本字段文本,然后单击Ok按钮时,我看不到对用户实例的任何更改。这是我的对话代码。。。。。 绑
本文向大家介绍浅谈AngularJs 双向绑定原理(数据绑定机制),包括了浅谈AngularJs 双向绑定原理(数据绑定机制)的使用技巧和注意事项,需要的朋友参考一下 那么什么是双向绑定,下面简单进行讲解。 首先我们要理解数据绑定。我们看到的网站页面中,是由数据和设计两部分组合而成。将设计转换成浏览器能理解的语言,便是html和css主要做的工作。而将数据显示在页面上,并且有一定的交互效果(比如点