$ watch vs DYNAMIC UI-Router的$ State.resolve

时间:2015-03-10 17:08:01

标签: angularjs angular-ui-router

我有一个可重复使用的 动态表格指令

指令:

    <div dynamic-table schema="ThisTableSchema" datasource="someDatasource"></div>

该指令只需将该特定表的硬编码attr字符串插入指令本身的$ http API字符串即可轻松获取每个相应表的模式。


数据源:

数据源是另一回事;它需要 来自每个表的控制器 ,因此在表的控制器获取数据源之前会导致指令触发的计时问题。

目前,我的指令有一个 $ watch方法,这解决了时间问题。

     $scope.$watch('datasource', function(newValue, oldValue){
                if(angular.isDefined(newValue)){
                    $scope.docs = newValue
                }
            });    

我理解 $ watch 方法的替代方法,如果存在性能问题,则为 $ state的解析方法。


$状态:(是动态的 - 源自db ---使用$ ocLazyLoad - 不在app.config中)

$ State是动态的,并在app.run中实例化,我无法在我的app.config中对解析方法进行硬编码,以解决那些需要上述指令的表数据的状态。尽管存在决心问题,但动态仍然有效。

我在互联网上找到了关于如何处理动态ui-router的解析方法的绝对零信息(代替使用$ watch方法)。

尽管我付出了最大的努力,但我还没有成功地使用动态$ state resolves。


关注$ watch方法:

我关注$ watch方法。我的大多数页面都包含一个动态表,因此该指令将在许多页面上。

___________________________________________________________________________

以下是我的问题:

  1. 虽然上述指令有很多视图,但一次只有一个可见视图。这是否会降低性能问题?

  2. 如果我确实让自己面临性能问题,当一个人的ui路由器是动态的时候,如何处理一个解决方法呢?

       app.run(){
        ....
            MenuSvc.all().success(function (states) {
            angular.forEach(states, function (state) {
    
            //THIS DOES NOT WORK:
            state.resolve =  {
                 'myResolveAlias': ['A_Particular_Tables_Svc',
                      function (A_Particular_Tables_Svc) {
                          return A_Particular_Tables_Svc.all();
                      }
                  ]
    
    
           // $stateProviderRef is a global variable 
           // instantiated in app.config, ie
           //  $stateProviderRef = $stateProvider
           $stateProviderRef.state(state.name, state);
      }
     }
    }
    

0 个答案:

没有答案