首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >触发ng-click后调用角度服务函数

触发ng-click后调用角度服务函数
EN

Stack Overflow用户
提问于 2016-09-04 19:55:19
回答 1查看 530关注 0票数 0

我正在开发一个名为"request“和"purchase order”的模块。该请求可以查看和编辑已发出的采购订单。以及采购订单模块,该采购订单模块也用于管理采购订单。

基本上,它是相同的东西,但可以从请求或采购订单访问。因此,我决定传递id,然后调用采购订单Ctrl,而不是复制粘贴采购订单中的所有代码。然后我创建了一个服务来传递ID,因为我发现使用$broadcast不是一个好的做法。

ID可以成功传递,但是为什么在触发ng-click之后,angular服务只执行一次呢?

以下是我的服务代码

代码语言:javascript
复制
.service('passID', function () {
    var id = null;
    var setID = function(passed_id) {
        id = passed_id;
    };

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

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

下面是我的请求控制器中的函数

代码语言:javascript
复制
var vm          = this;
vm.createModule = createModule;

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

下面是我的购买订单控制器中的代码

代码语言:javascript
复制
if(passID.getID() != null){
    vm.id = passID.getID();
    console.log(vm.id);
}

以下是请求视图文件

代码语言:javascript
复制
 <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未运行。

我在这里做错了什么?谢谢您:)

EN

回答 1

Stack Overflow用户

发布于 2016-09-04 20:25:10

您的函数可能不是公共的,在某种意义上,您没有公开它,通过$scope或使用控制器别名执行视图。因为您正在使用控制器别名vm。在控制器中,您可以将createModule绑定到控制器的this引用,如下所示:

代码语言:javascript
复制
//at the beginnning of controller definition
var vm = this;
vm.createModule = createModule
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39316651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档