使用Bootstrap-UI $ Dialog进行Angularjs指令协助

时间:2013-08-01 14:59:24

标签: angularjs angularjs-directive angular-ui

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

以下是我当前的标题:http://plnkr.co/edit/nzR3mjeLK3kPynSIjE7t?p=preview

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

指令本身有没有办法解决这个问题?

非常感谢任何帮助或指示。

1 个答案:

答案 0 :(得分: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