[英]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.