订阅子作用域上的事件,并在broadcastemit中返回回调
Subscribe an event on child scope and return callback in broadcastemit
我是在阅读@toddmotto优秀的帖子后来的,这个,这个和这个答案,api,现在我有了像这样的ctrl结构
<div ng-controller="ParentCtrl as parent" class="ng-scope">
<div ng-controller="SiblingOneCtrl as sib1" class="ng-scope"></div>
<div ng-controller="SiblingTwoCtrl as sib2" class="ng-scope"></div>
<div class="btn btn-primary"
ng-click="parent.events.saveDreaft()">
<span class="glyphicon glyphicon-ok"></span>
<span>Save</span>
</div>
</div>
&;
define(['app'], function (app) {
app.controller("ParentCtrl", ['$scope', '$q', function ($scope, $q) {
var parent= this;
parent.data = {};
parent.events = {
saveDreaft: function() {
$scope.$broadcast('saveDreaft');
//return $q(function(resolve, reject) {
// try {
// var ee = $scope.$broadcast('saveDreaft');
// if (ee)
// resolve();
// } catch (ex) {
// reject(ex);
// }
//});
}
};
}]);
});
//=======
define(['app'], function (app) {
app.controller("SiblingOneCtrl", ['$scope', '$http', '$q',
function ($scope, $http, $q) {
var sib1 = this;
sib1.events = {
saveSib1Form: function () {
return $http.post('..', ..)
.then(function (res) {..})
.catch(function (ex) {..});
}
};
var unbind = $scope.$on('saveDreaft', function (event, data) {
sib1.events.saveSib1Form();
//return $q.when(sib1.events.saveSib1Form)
// .then(function(res) {
// event.targetScope.callbackRes = {
// res: res,
// flag: true
// };
// })
// .catch(..);
});
$scope.$on('$destroy', unbind);
}]);
});
当客户端从父作用域单击save时,我们希望子级运行自己的save方法,然后向发布者发送一些回调,比如jQuery.Callbacks()
,他可能会完成$q
承诺。
有什么建议吗?
您可以使用$emit
在您的子作用域中实现类似回调的函数:
sib1.events.saveSib1Form();
$scope.$emit('saveComplete', args);
并在您的父作用域中注册$emit
事件:
$scope.$on('saveComplete', function(event, args) {
//your callback code
})
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 使用jQuery动态添加表并在其中动态添加行
- 遍历类元素数组,并在jquery中选择同级元素
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- ng消息仅在触摸时显示错误,并在错误的初始显示上转换
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何使用JS禁用表行,并在MYSQL中插入所选选项
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- OpenLayers在悬停时高亮显示功能,并在单击时选择
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- 获取屏幕截图并在电子邮件中发送的按钮
- CSS/HTML:更改文本的值并在悬停时从中心展开
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- Sails.js:我可以将一些服务/模型打包为npm并在Sails.jss应用程序中加载npm吗
- AJAX调用并在Node中获取返回数据
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 订阅子作用域上的事件,并在broadcastemit中返回回调