Javascript 观察角度
对于AngularJS,我应该如何触发模型现在变脏并且需要保存到服务器?除了用户点击“保存”按钮之外 我曾想过使用$watch,但当数据第一次加载时,它就会启动,所以你最终会遇到这样的攻击: 您还可以$emit事件触发保存,但在以下情况下:Javascript 观察角度,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,对于AngularJS,我应该如何触发模型现在变脏并且需要保存到服务器?除了用户点击“保存”按钮之外 我曾想过使用$watch,但当数据第一次加载时,它就会启动,所以你最终会遇到这样的攻击: 您还可以$emit事件触发保存,但在以下情况下: 在作用域上设置属性 $emit在该作用域上发出事件 在父控制器中捕获带$on的事件并查看属性 按照这个顺序,在步骤3中声明的事件处理程序将看到在步骤1中进行更改之前的scope属性 我在这里举了一个例子: 如果单击foo,然后单击bar,然后单击foo,
谢谢。这是因为双向绑定在
$digest
循环之前不会更新,循环发生在$emit
之后
我建议对数据使用$watch
来触发保存
// Controller
$scope.$watch('message', function(newVal, oldVal) {
if (newVal === oldVal) {
return;
}
// Handle update...
});
另一个选项是将对象而不是字符串传递到指令中。通过执行此操作,侦听器上的$将能够访问正确的数据
例如:
// Controller
$scope.messageData = {message: "Initial message"};
// HTML
<div set-message="messageData">...</div>
// Directive
scope: {
messageData: "=setMessage"
},
link: function(scope) {
scope.setMessage = function(message) {
scope.messageData.message = message;
scope.$emit('messagechange');
};
}
//控制器
$scope.messageData={message:“初始消息”};
//HTML
...
//指示
范围:{
messageData:“=setMessage”
},
链接:功能(范围){
scope.setMessage=函数(消息){
scope.messageData.message=消息;
作用域:$emit('messagechange');
};
}