Я работаю над модулем с именем "запрос" и "заказ на поставку". Запрос может просматривать и редактировать заказы на поставку, которые были сделаны. И модуль заказа на поставку, который также контролирует заказы на поставку.
По сути, это один и тот же материал, но к нему можно обращаться либо по заказу, либо по заказу на покупку. Итак, вместо этого скопируйте весь код из заказов на покупку, я решил передать идентификатор, а затем позвоните в заказ на покупку 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
не работает.
Что я здесь делаю неправильно? Спасибо :)
Ваша функция, вероятно, не является общедоступной, в том смысле, что вы не обнаружили ее VIEW либо через $ scope, либо с помощью псевдонима контроллера. Поскольку вы используете псевдоним контроллера vm. В вашем контроллере вы можете привязать свой createModule к контроллеру this
ссылкой, например:
//at the beginnning of controller definition
var vm = this;
vm.createModule = createModule
таким образом вы можете получить доступ к функции createModule vm из VIEW, другим методом было бы связать createModule с областью, которая почти похожа на этот метод, за исключением того, что вы привязываете свой метод к области и области по умолчанию, доступным в VIEW.
vm.createModule
в html. Где это назначено?