Javascript 从指令更新作用域并使用另一个指令监视
问题是: 我尝试这样做:Javascript 从指令更新作用域并使用另一个指令监视,javascript,jquery,html,angularjs,angularjs-directive,Javascript,Jquery,Html,Angularjs,Angularjs Directive,问题是: 我尝试这样做: 单击指令会触发一个事件 事件将数据发送到rootScope函数,该函数使用新数据设置范围变量值 另一个指令的模板中有一个ng模型,该模型应该反映先前更改的var 应更新视图和模型中的数据。模型正常(更新完成),但视图更新似乎不会自动触发,它只在我单击“显示按钮”时更新(请参见FIDLE) 下面是我制作的相应JSFIDLE,并附有注释: 这是我认为正在制造麻烦的代码…: app.directive('addEditInput', function() { ret
app.directive('addEditInput', function() {
return {
restrict : 'E',
template : '<div id="editForm"><input type="text" ng-model="currentVar.name" /><br/></div>'
}
});
app.directive('addEditInput',function(){
返回{
限制:'E',
模板:“
”
}
});
事实上,我返回了一个模板,带有ng模型。但是当ng模型的值从其他任何地方更改时,它不会更新
Tbh,我对指令和作用域通信-数据有点困惑
感谢阅读/帮助简短回答-您需要在top controller中调用
$scope.$apply
:
详细回答:您将通常的js函数绑定到通常的js事件,所以当用户单击元素时,您的函数将执行。就这些。当您使用ng click时,它将触发摘要循环,并且您的绑定将被更新。因此,您需要手动触发它,因此调用$scope.$apply
注意:最好不要在不需要的地方使用jquery。也就是说,使用
$element.bind('click',function(){
而不是$()。在…
上,您的理由是正确的,但是最好不要手动绑定单击。该指令使用一个隔离的作用域,因此使用设置方法完全没有问题,而是使用模板中按钮上的ng click
来设置它,无需手动调用$应用
。如果它继承了作用域,那么扩展它可能会很麻烦,但不是很好。请参阅fiddle:这不起作用。这可能来自我在整个项目中使用的“隔离控制器”,请参阅此详细示例以了解到底发生了什么:单击“视图”在第二列中,您将看到应该显示currentRow数据的div(指令)没有更新!(请注意,它必须双向绑定到globalscope,因为它以后应该通过输入在指令的模板中进行编辑)