通过ng-include将值传递给Angular控制器

时间:2015-11-17 18:18:51

标签: angularjs

从服务器端代码我加载和角度模板如下:

<div ng-include="'/views/signup.html'" onload="init('premium')"></div>

目前,观点如下:

<form ng-controller="AccountSignupController as controller">
</form>

控制器简单:

function AccountSignupController($scope) {

  $scope.plan = '';

  $scope.init = function (plan) {
    $scope.plan = plan;
    console.log(plan);
  };

};

在控制台上计划始终是&#34;未定义&#34;。

如何通过模板将值传递给控制器​​?

我是否需要在ng-include div上设置控制器并使用ng-init?

2 个答案:

答案 0 :(得分:0)

控制器的范围在“控制器”的形式内。是。因此$ scope.init函数只有&#34;可用&#34;在那个表格内。

这两个指令应该处于同一水平。尝试移动&#39; ng-controller&#39;到div或者&lt; init-init&#39;到表格(如果可能的话)。

答案 1 :(得分:0)

您正在使用controller as binding语法实例化控制器。在这种情况下,属性和函数绑定到控制器的this而不是$scope。应使用绑定调用函数。

您的模板应该是:

<div ng-include="'/views/signup.html'" 
   ng-controller="AccountSignupController as controller"
   onload="controller.init('premium')"></div>

你的控制器:

function AccountSignupController() {

  var self = this;
  this.plan = '';

  this.init = function (initString) {
    self.plan = initString;
    console.log(initString);
  };
};

有关controller as binding语法的详细信息,请参阅AngularJS ngController API