2013-07-31 35 views
24

Tôi đang có một biến phạm vi góc tênName.Vượt qua phạm vi góc biến đổi thành Javascript

<script type="text/javascript"> 
    angular.module('addApp').controller('add', ['$scope',function($scope) { 
      $scope.streetName = "Bonita Ln"; 
    }]); 
</script> 

Tôi làm cách nào để truy cập streetName trong javascript được xác định trong phạm vi điều khiển (thêm) này. Hãy giúp tôi.

<div ng-app="addApp" ng-controller="add"> 
StreetName: {{streetName}} 

<script type="text/javascript"> 
//here i need to access the value of streetName... 
</script> 

</div> 

Trả lời

30

Bằng cách này là dài nhưng nó hoạt động:

angular.element(document.querySelector('[ng-controller="add"]')).scope().streetName 

có thể đọc thêm:

var dom_el = document.querySelector('[ng-controller="add"]'); 
    var ng_el = angular.element(dom_el); 
    var ng_el_scope = ng_el.scope(); 
    var street_name = ng_el_scope.streetName; 

Và nó ngắn hơn nhiều nếu bạn đang sử dụng jQuery:

var street_name = $('[ng-controller="add"]').scope().streetName; 

Liên kết đến jsfiddle demo

+0

Nhưng điều này đang trở lại null. Nó không thể đọc bộ điều khiển 'thêm'. – JPN

+0

@JPN Có vẻ như yếu tố chưa sẵn sàng. Hãy thử để đặt mã của tôi trong 'window.onload' handler – Cherniv

+0

Làm việc của nó :) nhưng đôi khi nó mang lại cho null. Nhìn vào những gì tôi đang thiếu .. cảm ơn một tấn .. !! – JPN

12

Bạn có thể chuyển vat phạm vi của bạn đến các biến số js chung với $ window dịch vụ.

Như thế này:

angular.module('addApp', []) 
.controller('add', ['$window', function ($window) { 
    ... 
    $window.streetName = $scope.streetName; 
    ... 
} 

và đính kèm js của bạn sau đó trong mã comon js như thế:

<script type="text/javascript"> 
    document.write("\<script src='...' type='text/javascript'>\<\/script>"); 
</script> 

Nhưng hãy nhớ rằng đó là cách giải quyết, giải pháp không tốt nhất

+0

nhờ mẹo! –

+0

Điều này thật hoàn hảo! Chỉ trong trường hợp nó không rõ ràng, bạn có thể truy cập các giá trị được gán cho đối tượng cửa sổ $ góc cạnh với đối tượng cửa sổ javascript. –

+3

@Sergey Panfilov: nhưng làm thế nào tôi có thể truy cập giá trị đó trong giá trị myscript.? – lalitpatadiya

0

tôi đối mặt với một vấn đề tương tự. Tôi tìm thấy một công việc xung quanh. Nó làm việc tốt cho tôi nhưng không chắc đó có phải là cách tiếp cận đúng hay không.

Tạo trường nhập ẩn trong html và chỉ định giá trị của bạn từ góc cạnh. Truy cập giá trị này bằng javascript. Hãy chắc chắn rằng bạn tạo nó trước thẻ script của bạn để nó sẽ được khởi tạo khi bạn đến thẻ script của bạn.

Something như thế này:

<div ng-app="addApp" ng-controller="add"> 
    StreetName: {{streetName}} 
    <input type="hidden" id="dummyStreetName" value={{streetName}}> 
    <script type="text/javascript"> 
     console.log("I got the street name "+$("#dummyStreetName").val()); 
    </script> 
</div> 
Các vấn đề liên quan