【问题标题】:Initializing angular controller variables初始化角度控制器变量
【发布时间】:2016-03-07 11:07:10
【问题描述】:

我遇到了一个问题,即我的控制器变量没有按照控制器代码正确初始化。

控制器代码是

  angular.module('test')
  .controller('RegisterCtrl', function RegisterCtrl($scope) {
var vm = this;
   vm.model = {companyName:'aaa'};
    vm.data= [{fieldtype: 'input',key:'companyName'}]; 
});

ui-router是

  .state('register', {
        //     abstract: true,
        url: "/register",
        templateUrl: "/views/register.html",
        controller: 'RegisterCtrl',
        controlleras: 'vm'
      })

我有一个验证基本 html 来显示模型的输出:

<h2>Model</h2>
<pre>{{vm.model }}</pre>

在 chrome 中调试代码时,它会通过控制器代码并正确设置模型和数据,但是当页面完成加载时,vm.model 是空白的。我不确定我做错了什么。

提前致谢。

【问题讨论】:

  • ui-router 的状态配置对象没有controlleras 属性。您需要在 controller 属性中指定它(即 controller: 'RegisterCtrl as vm')。
  • @miqid 实际上确实如此,但它区分大小写。它是controllerAs。这是一个简单的错字。
  • @Claies,我的错!确实如此。文档中也只有两个表格行。 :-(
  • 是的,它区分大小写,现在可以使用.....谢谢

标签: angularjs angularjs-scope angularjs-controlleras


【解决方案1】:

尝试将其用作您的 HTML 正文标记:

<body ng-controller="RegisterCtrl as vm" ng-app="test">

【讨论】:

    【解决方案2】:

    我建议您使用 $scope.model 而不是 var,为此目的

    angular.module('test')
     .controller('RegisterCtrl',['$scope',function($scope) {
       $scope.model = {
                        companyName:'aaa'
                      };
       $scope.data= [
                     {
                       fieldtype: 'input',
                       key:'companyName'
                     }
                    ]; 
     }]);
    

    HTML

    <h2>Model</h2>
    <pre ng-bind="model.companyName"></pre>
    <pre>{{model.companyName}}</pre>
    <pre>{{model}}</pre>
    

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2015-01-11
      • 2016-12-31
      • 1970-01-01
      • 2017-09-05
      • 2020-12-22
      相关资源
      最近更新 更多