【问题标题】:angular how to refresh or reload directive on external event角度如何刷新或重新加载外部事件的指令
【发布时间】:2015-10-31 00:25:13
【问题描述】:

我正在使用角度 1.3

Plunker 代码在这里http://plnkr.co/edit/J7TSfUcNID11BZBEaBBr?p=preview

在我的代码中,我有 ngRoute,它为索引页面定义了一个控制器,它实现了如下的提取。

   .config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise('/');

    $stateProvider
        .state('home', {
            url: '/',
            templateUrl: '/assets/app/html/home.partial.html',
            controller: function($scope) {
                $scope.fetch = function(purchase) {
                    console.log("fetch is called, load data and show the grid");
                    $scope.grid = {};
                    $scope.grid.isActive = true;
                    //how to refresh purchases directive from here
                    //it should also pass the from and to dates
                    //based on that purchases will fetch the backend data
                }
            }
        })

}]);

我有一个指令 Purchases,我试图重新加载它,包括通过资源获取数据。当日期更改时,我想再次从后端查询数据并在 Purchases 指令内的网格上刷新它。

我使用 ngResource 插件,所以从后端获取数据是有序的。 加载页面时,链接功能只运行一次。

将 from 和 to 日期传递给指令的最佳方法是什么(检查 plunker index.html)?

当日期更改时,我没有看到指令(链接功能)将其拾起。我尝试了 html id、name 和 model,但它们都不起作用。

【问题讨论】:

  • 您如何将日期传递到指令中?您是否使用隔离范围?您是否尝试过使用scope.$watch

标签: angularjs angularjs-directive


【解决方案1】:

我假设您正在获取数据并将其提供给导演以根据它进行渲染。牢记这一点,有一种简单的方法可以“刷新”指令及其使用ng-if。如果 ng-if 中的表达式为假,则指令被销毁,如果为真,则重新实例化。如果它是基于新数据新实例化的,那么它也会显示新数据。这是刷新指令的一种方式。

理想情况下,您的网格应该根据您的数据是否发生变化而无缝更改,因为 AngularJS 有两种方式绑定。如果您的代码不是以这种方式创建的,那么您可以使用 ng-if 刷新指令。

【讨论】:

  • 我已经尝试过 ng-if、ng-show 和 ng-hide,但它们都没有按照我想要的方式工作,或者我没有得到它。 ng-if 不适用于我可以随意更改 from 和 to 日期并期望网格数据相应更新的情况。
猜你喜欢
  • 1970-01-01
  • 2016-05-28
  • 2016-07-22
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 2014-01-18
  • 1970-01-01
相关资源
最近更新 更多