我正在开发一个名为“request”和“purchase order”的模块。该请求可以查看和编辑已完成的采购订单。并且采购订单模块也用于管理采购订单。
基本上,它是相同的东西,但可以从请求或采购订单访问。因此,相反复制粘贴来自采购订单的所有代码,我决定传递id,然后调用Purchase Order Ctrl。然后我创建了一个服务来传递ID,因为我搜索使用$ broadcast不是一个好习惯。
ID可以成功传递,但为什么角点服务只会在点击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)
您的功能可能不公开,因为您没有通过$ scope或使用控制器别名来公开它。由于您使用的是控制器别名vm。在您的控制器中,您可以将createModule绑定到控制器的this
引用,例如:
//at the beginnning of controller definition
var vm = this;
vm.createModule = createModule
这样你可以从VIEW访问vm的createModule函数,另一种方法是将createModule绑定到与这个方法几乎相似的范围,除了你在范围和范围上绑定方法默认情况下在VIEW中可用。