0

我正在创建一个自定义指令,该指令在 ng-repeat 中创建一个按钮并将绑定到当前项目。单击按钮后,将打开一个 $dialog,其中包含一个 select2 框以选择和更改用户。保存时,用户将替换 ng-repeat 中的当前用户。我已经完成了所有这些工作(尽管会感谢任何代码审查/修订帮助,因为这是我的第一个指令),我被卡住的部分是现在如何合并对角度服务的回调以将更新的用户推回数据库。

这是我目前的 plunker:http ://plnkr.co/edit/nzR3mjeLK3kPynSIjE7t?p=preview

这里是调用父控制器中的函数来调用服务更新的最佳选择吗?

指令本身有没有办法处理这个问题?

任何帮助或方向将不胜感激。

4

1 回答 1

1

您可以注入一个在服务内部实现数据持久性的服务模块,以便将逻辑与指令分离。

.factory('service', function () {
    var service = {
      doSomething: function(result){
        //logic to do the data persistence
        console.log('saved!');
      }
    }

   return service;
})

.directive('delegateApproval', function($dialog, service) { //inject the 'service'

$scope.openDelegate = function(approval) {
    d.open().then(function(result) {

        $scope.approval._approver._user._lastName = '';
        $scope.approval._approver._user._firstName = result.empName;

        service.doSomething(approval); // consume the service
    });
};

Demo

于 2013-08-01T15:38:36.263 回答