【问题标题】:Resolving values for each controller, when using multiple views使用多个视图时为每个控制器解析值
【发布时间】:2014-07-04 02:57:00
【问题描述】:

我正在使用angular-ui-router,并且我有多个ui-view div,如下所示:

<!DOCTYPE html>
<html ng-app="myApp">
    <!-- loading libraries here etc -->      
    <div ui-view="viewA"></div>    
</html>

每个视图都有自己的控制器,我需要解析传递给这些控制器的依赖项。我尝试了以下方法,但不知道为什么它不起作用:

var myApp = angular.module('myApp', ['ui.router']);

myApp.config(function($stateProvider) {
  $stateProvider
    .state('index', {
      url: "",
      views: {
        "viewA": { 
            template: "{{test}}", 
            resolve: { 
                test: function(){ 
                    return {
                        value: 'Hello World!'
                    };
                } 
            }, 
            controller: testController 
        },
      }
    });
});

myApp.controller('testController', function($scope, test){
  $scope.test = test.value;
});

I have created a plunker here.

在调用 config.xml 之前或之后声明控制器都没有关系。将控制器内联确实有效,但是随着时间的推移,这会变得笨拙且难以维护,我想将它存储在它自己的文件中。

我的印象是 Angular 足够聪明,可以在引导您的应用程序时等待加载依赖项,不是这样吗?将我的控制器内联的唯一方法是什么?

谢谢

【问题讨论】:

    标签: javascript html angularjs angular-ui-router


    【解决方案1】:

    .config 选项应该这样写:

    controller: 'testController'
    

    即,将控制器的名称作为字符串给出。没有它,您只会尝试访问一个名为testController变量 - 但在这个函数的范围内没有。

    【讨论】:

    • 说只见树不见林,现在觉得自己像个白痴!非常感谢
    • 啊,没关系,我们所有人都会时不时发生这种情况。 ) 刚刚回答了相反的问题,其中值实际上应该以变量而不是字符串的形式传递给函数。
    猜你喜欢
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多