2016-09-04 1 views
0

"request"と "purchase order"という名前のモジュールで作業しています。依頼は、実行された購買発注を表示および編集することができます。また、購買発注モジュールは購買発注も管理します。ng-clickが発砲された後、コールサービス機能を呼び出す

基本的には同じものですが、リクエストまたは購入注文からアクセスできます。その代わりに、購買発注のすべてのコードをコピーしてコピーし、IDを渡してから、購買発注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

この特定の例については正しいと思われます。あなたは別のリクエストデータをクリックしようとしているところでいくつかのコードを提供できますか? – AndreaM16

+0

htmlで 'vm.createModule'を呼び出しています。これはどこに割り当てられていますか?あなたのコントローラの –

+0

は、 'var vm = this;のようにvmにcreateModuleをバインドします。 vm.createModule = createModule; ' –

答えて

0

あなたの関数は、$ scopeまたはcontroller aliasを使ってVIEWを公開していないという意味で、おそらくパブリックではありません。あなたはコントローラエイリアスVMを使用しているからです。お使いのコントローラでは、あなたのようなコントローラーのthis参照にごcreateModule、結合することができる:

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

あなたはVIEWからVMのcreateModule機能にアクセスすることができ、このように、別の方法では、この方法とほぼ同様である範囲にcreateModuleをバインドするだろうスコープでメソッドをバインドすることを除いて、スコープはデフォルトでVIEWで使用可能です。

+0

先生、前に定義しました。つまり、一度は動作しますが、別のデータをクリックすると、サービスはもう実行されません – Vinfoster0701

関連する問題