it-swarm.dev

افتح علامة تبويب جديدة على زر انقر في AngularJS

<button type="button" class="btn btn-primary" ng-click="openTab()">new tab</button>

openTab = function () {
  $http.post('www.google.com');
}

ما أريده هو نشر متطلبات وفتح استجابة html في علامة تبويب جديدة عند النقر فوق الزر "openTab". لا توجد طريقة للقيام بذلك باستخدام $http. أعتقد أن هذا الأمر بسيط ، لكن لا يمكنني إيجاد طريقة.

72
neptune

يمكنك القيام بكل ذلك داخل وحدة التحكم الخاصة بك باستخدام خدمة نافذة $ هنا . نافذة $ عبارة عن غلاف حول نافذة كائن المستعرض العمومي.

لجعل هذا العمل حقن نافذة دولار في تحكم لك على النحو التالي

.controller('exampleCtrl', ['$scope', '$window',
    function($scope, $window) {
        $scope.redirectToGoogle = function(){
            $window.open('https://www.google.com', '_blank');
        };
    }
]);

هذا يعمل بشكل جيد عند إعادة التوجيه إلى طرق ديناميكية

169
Aaron

لقد حللت هذا السؤال بهذه الطريقة.

<a class="btn btn-primary" target="_blank" ng-href="{{url}}" ng-mousedown="openTab()">newTab</a>

$scope.openTab = function() {
    $scope.url = 'www.google.com';
}
18
neptune

طريقة HTML الصحيحة: ما عليك سوى إحاطة الزر الخاص بك باستخدام عنصر ربط وإضافة السمة target = "_ blank" . انها siple مثل ذلك:

<a ng-href="{{yourDynamicURL}}" target="_blank">
    <h1>Open me in new Tab</h1>
</a>

حيث يمكنك ضبطه في وحدة التحكم:

$scope.yourDynamicURL = 'https://stackoverflow.com';
3
Renat Gatin