2015-06-18 3 views
0

Я получаю эту ошибку брошенную:

Error: Error: [$parse:isecwindow] Referencing the Window in Angular expressions is disallowed! 

Когда я пытаюсь использовать $ window.open/window.open в angularjs.

Generate.html

<div class="print-report-footer" ng-show="vm.clicked"> 
    <button type="button" class="btn btn-primary" ng-click="vm.downloadFile('pdf')">PDF</button> 
    <button type="button" class="btn btn-primary" ng-click="vm.downloadFile('xls')">XLS</button> 
    <button type="button" class="btn btn-primary" ng-click="vm.downloadFile('csv')">CSV</button> 
</div> 

Generate.ctrl.js

function downloadFile (fileType) { 
     var path = '/images/reports/DistrictSchoolReport.' + fileType; 
     return $window.open(path); 
    } 

    self.downloadFile = downloadFile; 

Это код, который я использовал. Что мне нужно сделать, чтобы избежать этой ошибки, возникающей каждый раз, когда я использую $ window.open?

+0

Вы можете попробовать $ window.open (path); вернуть; Похоже, вы вызываете эту функцию из представления, что вызывает проблему. –

+1

Вы уверены, что ошибка бросается в $ window не в другом месте? У вас может быть проблема определения области, где 'this' инициализируется как' window'. – timeiscoffee

+0

Кстати, вы также можете использовать 'window.open', а не' $ window.open'. также убедитесь, что этот код работает под угловым проектом. –

ответ

4

Вы используете $ window.open() из представления. Сделайте это вместо: (не используйте возврат)

function downloadFile (fileType) { 
    var path = '/images/reports/DistrictSchoolReport.' + fileType; 
    $window.open(path); 
} 
+1

Это определенно« возврат », вызывающий ошибку – Phil

+0

@Phil Я знаю, что эта проблема решена, но можете ли вы, ребята, объяснить мне, почему оператор return вызывает эту ошибку? –

+0

вы возвращали функцию $ window.open(), которая запускалась из представления html-шаблона. Хотя окно доступно из документа, в этом случае он недоступен из представления. –

Смежные вопросы