从服务器端代码我加载和角度模板如下:
<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?
答案 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