2015-08-04 2 views
2

Извините за довольно простой вопрос, но я действительно начинающий, развивающийся в AngularJS. Так что у меня conteoller как это (как здесь объяснены: https://github.com/johnpapa/angular-styleguide):AngularJS invoke Функция контроллера

(function() { 
'use strict'; 

angular 
    .module('project.management') 
    .controller('ManagementController', ManagementController); 

function ManagementController() { 
    var vm = this; 
    vm.getUsersBySearchString= getUsersBySearchString; 

    //////////// 

    function getUsersBySearchString(searchString) { 
     alert('get User By searchstring: ' + searchString);   
    } 
}; 
})(); 

Теперь у меня есть фрагмент HTML в моем шаблоне, и я действительно не знаю, как вызвать функцию getUsersBySearchString (SearchString). Я попытался это:

<div ng-controller="vm"> 
<form class="well form-search"> 
    <label>Usersuche:</label> 
    <input type="text" ng-model="term" class="input-medium search-query" placeholder="Username"> 
    <button type="submit" class="btn" ng-click="getUsersBySearchStringgetUsersBySearchString()">Suchen</button> 
</form> 
<pre ng-model="result"> 
{{result}} 
</pre> 
    </div> 

, но я не знаю, что поставить здесь

<div ng-controller="vm"> 

и как вызвать метод. Большое спасибо за помощь!

+1

'нг-контроллер = "ManagementController в виртуальной машине"' –

ответ

5
<div ng-controller="vm"> 

Это неверно. У вас нет контроллера с именем «vm». Ваш контроллер имеет имя ManagementController.

Синтаксис для потребительной случае

<div ng-controller="ManagementController as vm"> 

А для вызова функции, вы должны использовать

ng-click="vm.getUsersBySearchString(term)" 

Обратите внимание, что псевдоним вы выбираете в HTML не имеет никакого отношения с псевдонимом вы выбрали для this в коде контроллера. Вы можете очень хорошо использовать

<div ng-controller="ManagementController as managementCtrl"> 

и

ng-click="managementCtrl.getUsersBySearchString(term)" 
+0

спасибо большое за помощь – quma

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