2015-11-17 2 views
1

от стороны сервера кода я Погрузочный и углового шаблона следующим образом:Pass значения углового контроллера через нг-включает

<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); 
    }; 

}; 

на консоли план является «не определено».

Как передать значение контроллеру через шаблон?

Нужно ли устанавливать контроллер на ng-include div и использовать ng-init?

+0

У меня есть OnLoad. Так есть ли какие-либо опции для передачи параметра через ng-include? –

+0

Не следует использовать 'console.log (plan)'? – georgeawg

+0

Да, я только что исправил. Это была ошибка, но у меня все в порядке. –

ответ

0

Объем контроллера находится внутри формы, где находится «ng-controller». Таким образом, функция $ scope.init доступна только внутри этой формы.

Обе директивы должны быть на одном уровне. Попробуйте переместить 'ng-controller' в div или 'ng-init' в форму (если возможно).

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

Смежные вопросы