如何在另一个状态内渲染角度ui-route状态?

时间:2015-06-15 17:54:46

标签: angularjs angular-ui-router

我有两个ui路由状态S1S2。 S1是一种查询状态,具有查询某些数据的形式。 S2是结果状态,其中我显示我从S1状态获得的数据。

现在我想在S1结果状态中提供S2(查询状态),以便用户可以在S2状态本身修改查询。

如何在S1州访问S2模板和控制器?

代码:

$stateProvider
        .state('form', {
            url: '/form',
            templateUrl: '/modules/form',
            controller: 'formController'
        })
        .state('result', {
            url: '/result',
            templateUrl: '/modules/result',
            controller: 'resultController'
        })

我想在form州内使用result州。

注意:我是角色新手,请为我提供一些类似场景的消息。

1 个答案:

答案 0 :(得分:0)

这在某种程度上是一个主观的答案,但是使用ui-router非常多,我认为它非常适合处理各种路线,但是如果你想在不同的页面上使用模块化可重复使用的部件,我可以使用ui-router。声称你只需要使用角度的原生指令就可以轻松过时。

app.directive('someform', function() {
  return {
    restrict: 'E',
    templateUrl: 'form.html',
    controller : 'formController'
  };
});

http://plnkr.co/edit/JynPLQQgE1UqVMBOLvdS?p=preview追求完整性。 (您可能需要注意,在此示例中,ui-router完全是多余的。)

至于控制器之间的通信,一种方法是使用$broadcast$emit$on。但我更喜欢保存结果的服务,并将其注入两个控制器以便于访问。

app.factory('Results', function(){
  results = [{value:'aaaa'},{value:'bbb'}, {value:'cccc'}];
  return {
    get : function(){
      return results;
    },
    add : function(value){
      results.push(value);
    }
  }
})

http://plnkr.co/edit/IC6OysrLw64lG8ed1sfL?p=preview