2016-04-22 28 views
0

我想知道是否有办法解决UI路由器的解析函数的库依赖性。在角度ui路由器上注入一个库在状态解析

事情是这样的:

$stateProvider.state('app.cart', { 
       title : "CART.TITLE", 
       url  : '/cart', 
       views : { 
        '[email protected]': { 
         templateUrl: 'app/main/cart/cart.html', 
         controller : 'CartController as vm' 
        }, 
       }, 
       bodyClass: 'cart', 
       resolve: { 
        //fetch a library, ex. moment js 
        var moment = $http.get('moment.js'); 
        body.append(moment); 
       } 
      }); 
+0

您可以尝试查看$ q服务,您可以使用该服务在库加载后返回承诺结果 – mindparse

+2

您为什么要这么做?尝试解释你想要达到的目标。 – Ioan

+0

只是试图查看是否有可能只有当用户进入某些状态时才获取库。 – ospfranco

回答

2

不知道为什么你要这么做,但你可以很容易地内resolve获取JS文件。 Demo

$stateProvider 
    .state('state1', { 
    url: 'state1', 
    templateUrl: 'state1.tpl.html' 
    }) 
    .state('state2', { 
    url: 'state2', 
    templateUrl: 'state2.tpl.html', 
    resolve: { 
     external: ['$http', function($http) { 
     var someJs = 'https://gist.githubusercontent.com/jonaszuberbuehler/952c2f9a0c9e28557ed89c1e4d6fe8b7/raw/e6664811e1b34d9761500f4c46bfd2e1e2439d23/gistfile1.txt'; 
     return $http.get(someJs).then(function(result) { 
      alert(result.data); 
     }); 
     }] 
    } 
    }); 

将它添加到DOM是另一个问题。

+0

好的,所以一旦我提取它,它在代码中可用吗? – ospfranco

+0

是的,源代码就在那里,你用它做什么是你的选择(例如将它添加到DOM中,或者使用邪恶'eval()')。 – z00bs

+0

我更新了演示以添加包含获取源的新脚本标记。但我不是说你应该那样做...... – z00bs