簡體   English   中英

我可以將變量控制器函數傳遞給指令中的函數鏈接嗎?

[英]Can I pass variable controller function to a function link in a directive?

我在angularjs上使用了一個自定義指令,我想將一些變量傳遞給指令,以便使用seted數據構建指令,數據是從$ http響應中獲取的,但這需要很長時間而且沒有任何問題。填充了數據響應。

我認為如果我可以在指令內的控制器函數中發出請求,也許我可以在響應結束之前設置$ timeout函數,但問題是如果我在$ http響應中得到數據並填充變量有了這些數據,我可以將它傳遞給鏈接功能嗎?

編輯:最終結果是表單中的一組o字段,從json對象以動態方式填充它。

通常,如果您要使用自定義指令共享某些信息,則可以通過手動屬性或使用隔離范圍來執行此操作。

想象一下,我有一個自定義指令來顯示有關widget一些細節,但我希望它是通用的...然后我可以像這樣編寫我的指令:

{
   restrict: 'E',
   template: '<div>{{widget.name}}</div>',
   scope: {
      widget:'=' //Allows two way binding with parent scope
   }
}

這是最簡單的用例,但這將允許我在我的指令中綁定到該對象並使其完全隔離。

假設我有一個控制器實際上從'$ http'調用中查找我的小部件,我可以像這樣指令:

<!-- 
    widget attribute is made available because of how we
    declared our directive definition.
-->
<widget-directive widget="ctrl.myWidget"></widget-directive>

如果您的指令更高級,並且您需要根據對該對象的更改執行某些操作,那么您只需在鏈接函數中查看它:

link: function(scope, elem, attrs){
   scope.$watch('widget', function(newVal, oldVal){
      // 
      //Do something here now that 'widget' has changed
      //
   });
}

當您必須觀看物體(深度觀察)時,您可以像這樣聲明您的手表:

link: function(scope, elem, attrs){
   scope.$watch(function () { return scope.widget; }, function(newVal, oldVal){
      scope.widget = newVal;
   }, true);
}

注意返回對象的函數,以及添加到手表末尾的true。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM