Вызов угловой сервисной функции после срабатывания ng-клика

0

Я работаю над модулем с именем "запрос" и "заказ на поставку". Запрос может просматривать и редактировать заказы на поставку, которые были сделаны. И модуль заказа на поставку, который также контролирует заказы на поставку.

По сути, это один и тот же материал, но к нему можно обращаться либо по заказу, либо по заказу на покупку. Итак, вместо этого скопируйте весь код из заказов на покупку, я решил передать идентификатор, а затем позвоните в заказ на покупку Ctrl. Затем я создал службу для передачи идентификатора, так как я искал, что использование $ broadcast не является хорошей практикой.

Идентификатор может быть успешно передан, однако, почему угловая служба будет выполняться только после нажатия кнопки ng-click?

Вот мой код службы

.service('passID', function () {
    var id = null;
    var setID = function(passed_id) {
        id = passed_id;
    };

    var getID = function(){
        return id;
    };

    return {
        setID: setID,
        getID: getID
    };
})

вот функция в моем контроллере запроса

var vm          = this;
vm.createModule = createModule;

function createModule(type,id){
    vm.state = null;
    switch(type){
        case "PurchaseOrder":
            vm.state = type;
            passID.setID(id);
        break;
    }
}

и вот код внутри моего контроллера заказа на поставку

if(passID.getID() != null){
    vm.id = passID.getID();
    console.log(vm.id);
}

вот файл представления запроса

 <li role="menuitem"><a href="" ng-click="vm.createModule('PurchaseOrder',item.id)">
    <i class="fa fa-pencil"></i> Create Purchase Order </a>
 </li>

 <div ng-controller="customerPurchaseOrderCtrl" ng-if="vm.state == 'PurchaseOrder'">
    <span ng-include="'app_view/modules/ship/purchase_order/customer/form.html'" ></span>
</div>

Как только страница была загружена, а затем я запускаю функцию ng-click, она работает хорошо, она запускает console.log(vm.id). Но когда я нажимаю на другие данные запроса, это больше не работает. console.log не работает.

Что я здесь делаю неправильно? Спасибо :)

  • 0
    Для этого конкретного примера это кажется правильным. Можете ли вы предоставить какой-то код, где вы пытаетесь нажать на другой запрос данных?
  • 0
    Вы вызываете vm.createModule в html. Где это назначено?
Показать ещё 2 комментария
Теги:

1 ответ

0

Ваша функция, вероятно, не является общедоступной, в том смысле, что вы не обнаружили ее VIEW либо через $ scope, либо с помощью псевдонима контроллера. Поскольку вы используете псевдоним контроллера vm. В вашем контроллере вы можете привязать свой createModule к контроллеру this ссылкой, например:

//at the beginnning of controller definition
var vm = this;
vm.createModule = createModule

таким образом вы можете получить доступ к функции createModule vm из VIEW, другим методом было бы связать createModule с областью, которая почти похожа на этот метод, за исключением того, что вы привязываете свой метод к области и области по умолчанию, доступным в VIEW.

  • 0
    Сэр, я уже определил это. поэтому он может работать один раз, но когда я нажимаю на другие данные, служба больше не запускается

Ещё вопросы

Сообщество Overcoder
Наверх
Меню