簡體   English   中英

將對象傳遞給指令不允許全局變量

[英]Passing object to directive does not allow global variables

我將指令col定義為col: '='的變量col傳遞給指令col: '=' 該對象包含一些數組,並且在這些數組中有一個函數。 該函數從我的控制器引用了一個變量,它看起來像這樣:

function (params) {
    return $scope.function(params);
}

col變量將傳遞給big指令包含的子指令,然后該子指令將其執行。

它從一個名為VM {random number here}的文件拋出錯誤,該文件說$scope未定義。

如何使其從我的控制器而不是虛擬JS文件運行?

如果您需要通過功能,則必須為該作業創建服務/工廠。我認為要在指令或組件中使用。

不要忘記服務是單例的,工廠實施標准的工廠模式。

如果全局意味着窗口變量或函數不需要僅注入this.windows。 ....做這份工作。

問候。

在為控制器聲明的html模板中調用您的指令
並將數據從指令直接傳遞給控制器​​中使用的函數
這樣您就可以在控制器的同一渲染模板上訪問指令數據

指示

.directive('myDir', function () {
   return {
     'restrict': 'AE',
     'templateUrl': '/directive_page.html',
         'scope': {
           'col': '=',
           'onSelect': '='
         }
   }
   'link': function () {
       // use onselect method here to use values
   }
}

控制者

.controller('myController', function () {
    $scope.setValueFromDirective = function (value) {
       // write your logic to fetch data
    };
});

的HTML

<div data-my-dir="" col="//pass value you want in directive" data-on-select='setValueFromDirective(value)'>
</div>

我希望這能幫到您

暫無
暫無

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

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