gpt4 book ai didi

javascript - 在子作用域上订阅事件并在广播\发射中返回回调

转载 作者:行者123 更新时间:2023-12-02 15:12:24 25 4
gpt4 key购买 nike

我读完@toddmotto后就来了优秀post , this , thisthis答案,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);
}]);
});

当客户端从父范围单击“保存”时,我们希望子级运行自己的保存方法,然后向发布者发送一些回调,例如 jQuery.Callbacks()他也许会完成$q的 promise 。

有什么建议吗?

最佳答案

您可以使用 $emit 在子作用域中实现类似回调的函数:

sib1.events.saveSib1Form();
$scope.$emit('saveComplete', args);

并在父作用域中注册 $emit 事件:

$scope.$on('saveComplete', function(event, args) {
//your callback code
})

关于javascript - 在子作用域上订阅事件并在广播\发射中返回回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34720138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com