Angularjs $watch vs$State.动态UI路由器的解析

Angularjs $watch vs$State.动态UI路由器的解析,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个可重用的动态表指令: 指令: <div dynamic-table schema="ThisTableSchema" datasource="someDatasource"></div> 我知道,如果存在性能问题,$watch方法的替代方法是$state的resolve方法 $State:(是动态的——来自db——使用$ocLazyLoad——不在app.config中) $State是动态的,并在app.run中实例化,我无法在我的app.confi

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

指令:

    <div dynamic-table schema="ThisTableSchema" datasource="someDatasource"></div>
我知道,如果存在性能问题,$watch方法的替代方法是$state的resolve方法


$State:(是动态的——来自db——使用$ocLazyLoad——不在app.config中)

$State是动态的,并在app.run中实例化,我无法在我的app.config中为需要上述指令的表数据的状态硬编码解析方法。尽管解决了这个问题,但动态仍然有效

我在互联网上找到了关于如何处理动态ui路由器解析方法(而不是使用$watch方法)的绝对零信息

尽管我尽了最大的努力,但在使用动态$state resolves方面还是失败了


关注$watch方法:

    <div dynamic-table schema="ThisTableSchema" datasource="someDatasource"></div>
我担心的是$watch方法。我的大多数页面都包含一个动态表,因此该指令将出现在许多页面上

\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu强 以下是我的问题:

    <div dynamic-table schema="ThisTableSchema" datasource="someDatasource"></div>
  • 虽然有许多具有上述指令的视图,但一次只有一个可见视图具有该指令。这是否减少了对性能的担忧

  • 如果我确实面临性能问题,当用户界面路由器是动态的时,如何处理解析方法

       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);
      }
     }
    }
    

  • 除了使用监视或解析之外,不想让你的船颠簸,但可能的其他解决方案是:当你的数据可用时,从控制器范围广播一个事件,这样你就可以在你的指令中拾取它,或者你可以将承诺传递给指令,并在指令本身中处理回调。我很感激,但是,让控制器尽可能精巧,并处理ui-router中的所有内容会很好。iH8,这个应用程序太大了,我无法在这个问题上转动轮子。我尝试了广播的方法,效果很好。如果它减少了性能问题,我将在每个控制器中多写几行代码。但是,在ui-router中处理这个问题会更好。你想让我把它变成一个答案吗?这有点离题。这肯定比使用$watch好,因为分辨率不起作用。我猜在你的控制器中,通过承诺会更干净。去做吧,伙计,不要有太多的信息,如果它看起来不错并且有效,我会很乐意给你分数。