javascript - Angular UI-Router - 直接在模板 url 上使用 "resolve"

标签 javascript angularjs angular-ui-router angular-ui state

我正在使用 UI-Router 并希望将路由更改为“基于组件”。所以我不想定义 Controller /模板,而是想像这样使用它:

.state('issue', {
    url: '/someUrl/:number',
    template: '<my-directive></my-directive>',
    resolve: {
      data: function(dataService) {
        return dataService.getData().then(function(response) {
            console.log(response.data);
            return response.data;
        });
      }
    }
 })

现在,我知道使用 Angular 的 ngRoute 我可以直接在模板中使用解析的数据,例如:

 $routeProvider
      .when('/', {
        template: `<my-directive data="resolve.data"></my-directive>`,
        resolve: {
          data: function (dataService) {
            return dataService.getData();
          }
        }
      }) 

我无法使用 UI-Router 完成此操作(值未定义)。

我做错了什么吗?是否可以使用 ui-router?

最佳答案

UI-Router 的要点是 - resolve 的结果可用于 controller (与模板相关)。所以,我们可以这样做:

.state('issue', {
    url: '/someUrl/:number',
    template: '<my-directive data="stateCtrlData"></my-directive>',
    controller: function($scope, data) { $scope.stateCtrlData = data },
    resolve: {
      data: function(dataService) {
        return dataService.getData().then(function(response) {
            console.log(response.data);
            return response.data;
        });
      }
    }
  })

data 被传递到 Controller 中,我们从它的范围将它传递给指令。

关于javascript - Angular UI-Router - 直接在模板 url 上使用 "resolve",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34437380/

相关文章:

javascript - 在 PhantomJS 中模拟时区以进行 Jasmine 测试

javascript - 在原型(prototype)中绑定(bind)事件处理程序并仍然保持对元素的引用

javascript - 使用 jQuery 将脚本引用添加到页面中

javascript - angular js中可选择的表格模式弹出窗口

javascript - Angular 用户界面路由器状态模板不起作用

JavaScript - 如何使用解析为 PHP 的变量数据?

javascript - 如何使用 AngularJS 对多个对象应用过滤器?

javascript - AngularJS - 在选择的 ngOptions 上设置背景颜色

angularjs - $rootScope 事件 PreventDefault 不会停止后续处理程序

angularjs - 不确定如何使用 meanjs 限制路由