2016-09-06 18 views
3

それを呼び出す:自己実行匿名関数と、私はこのような何かをしたい、再び

var build= (function(){ 
    //my function body  
})(); 

function test(){ 
    //somthing then call build 
    build() //i want to call build function again in my code 
} 

私はこれをどのように行うことができますか? 角度でこれを試しました:

var buildRoot = (() => { 

       $SubNode.get({ 
        TypeID: vendorAdminService.NodeType.Category 
       }, function(data: vendorAdminService.IGetNodeParameters) { 
        $scope.ProductTree = data.TreeNodeModelItem; 
        $scope.AjaxLoading = false; 

       }, function(err) { 
        // alert(err) 
       }) 
     })(); 
$mdDialog.show(confirm).then(function() { 
       $Category.Remove(node.ID) 
       buildRoot 
      }, function() { 

      }); 

しかし、動作しません。 誰も私を導くことができますか?

+2

あなたの生命維持には、後で呼び出すために、関数を返す必要があります。匿名機能は必要ありません。 –

+0

'VARビルド=(関数(){ VARのFUNC =関数(){ アラート(); }; FUNC(); リターンFUNC; })(); function test(){ build(); } 'JavaScriptセミコロンの – Rayon

答えて

1

と呼ばれています。 IIFが些細なことではなく、多くの機能を備えている場合は、Reveal Module Patternの使用を検討することもできます。

var build = (function() { 
 
    var f = function() { 
 
    console.log('hello'); 
 
    }; 
 
    f(); 
 
    return f; 
 
})(); 
 

 
function test() { 
 
    build(); 
 
} 
 

 
test();
私はセミコロンの欠落があることがわかり

0
var build = (function() { 

    var init = function() { 
     // magic code 
    }; 

    return { 
     init: init 
    } 

}()); 

function test() { 
    build.init() 
} 

test(); 

ビルドオブジェクト内にすべての機能を含めると、そのオブジェクトの内部からそれらを返すとすぐに呼び出すことができます。これは、効果的に暴露のモジュールパターンの詳細については

、あなたがあなたの生命維持に機能を返す必要がread this

0

";"

$mdDialog.show(confirm).then(function() { 
      $Category.Remove(node.ID); 
      buildRoot(); 
     }, function() { 

     }); 
+0

はオプションです –

1

名前付き関数を使用してください。

IIFEは、後で呼び出すために関数を返す必要があります。しかし、無名の機能は必要ありません。

function build() { 
    //my function body 
} 

または

var build = function() { 
     //my function body 
    }; 
関連する問題