我正在开发一个名为"request“和"purchase order”的模块。该请求可以查看和编辑已发出的采购订单。以及采购订单模块,该采购订单模块也用于管理采购订单。
基本上,它是相同的东西,但可以从请求或采购订单访问。因此,我决定传递id,然后调用采购订单Ctrl,而不是复制粘贴采购订单中的所有代码。然后我创建了一个服务来传递ID,因为我发现使用$broadcast不是一个好的做法。
ID可以成功传递,但是为什么在触发ng-click之后,angular服务只执行一次呢?
以下是我的服务代码
.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未运行。
我在这里做错了什么?谢谢您:)
发布于 2016-09-04 20:25:10
您的函数可能不是公共的,在某种意义上,您没有公开它,通过$scope或使用控制器别名执行视图。因为您正在使用控制器别名vm。在控制器中,您可以将createModule绑定到控制器的this引用,如下所示:
//at the beginnning of controller definition
var vm = this;
vm.createModule = createModulehttps://stackoverflow.com/questions/39316651
复制相似问题