将两个函数链接起来的最佳实践,AngularJs / JavaScript

时间:2015-11-28 18:42:44

标签: javascript angularjs function

我有两个功能。

单击“关闭”按钮时,会隐藏一个模态 另一个函数向右滑动并将模态更改为另一个状态/视图。

当用户滑动到新状态时,我遇到了模式NOT'隐藏'的问题。我可以看到它有效,但模态仍在显示,我认为解决这个问题的最佳方法是链接我的两个函数?这是正确的术语吗?

两个功能..

隐藏模态

$scope.closetripInfo = function() {
    $scope.modal.hide();
  };

SWIPES有权透露新的.state

$scope.onSwipeRight = function() {
  $state.go('app.current-trip');
}

这有效!但.. 我想要做的是将令人兴奋的closetripInfo函数插入到onSwipeRight中,如此:

$scope.onSwipeRight = function() {

  $scope.closetripInfo();  
  $state.go('app.current-trip').closetripInfo();
}

它有效,但它看起来不对我,我收到错误..我没有成功地做到这一点。也许不那么简单。我还认为我可能需要了解承诺等最佳实践?

错误

TypeError:$ state.go(...)。closetripInfo不是函数     在Scope。$ scope.onSwipeRight

非常感谢任何建议或资源。谢谢!

1 个答案:

答案 0 :(得分:4)

您可以使用AngularJS承诺异步运行函数。 AngularJS中的承诺由内置的$q服务提供。您可以阅读here

$scope.onSwipeRight = function() {
  var deferred = $q.defer();
  deferred.resolve('res');

  $state.go('app.current-trip');

  // We return a promise
  return deferred.promise;
}


onSwipeRight().then(function(res) {
   // Success callback
   $scope.closetripInfo();
},null);

以下是使用$q服务的fiddle。这也是一个很好的博客post,其中承诺被解释为卡通。