5

Tôi có hai trường đầu vào bên trong nội dung ion của tôi và cả hai đều có một mô hình ng gắn liền với chúng. Sau đó, bên trong chân-ion của tôi, tôi có một ng-click, nơi tôi gọi một chức năng và vượt qua trong hai ng-mô hình.

Tất cả đều hoạt động tốt khi tôi có ng-click bên trong nội dung ion, nhưng khi tôi di chuyển nó đến chân trang, tôi nhận được không xác định cho hai thông số tôi chuyển đến hàm.

Vậy điều này có nghĩa là nội dung ion và chân-ion có phạm vi $ khác nhau không? Mặc dù họ đang ở trong cùng một tập tin và có cùng một bộ điều khiển ??

+1

tạo ra một phạm vi như '$ scope.data = {}' & đặt tất cả các mô hình ng được liên kết trên html.place trong đối tượng này như 'ng-model =" data.model1 "', 'ng-model =" data.model2 "' –

+0

@pankajparkar tuyệt vời! Làm việc như một say mê! Nhưng tôi vẫn tò mò về lý do tại sao nó không hoạt động theo cách đó? Do nội dung và chân trang có phạm vi khác nhau trong trường hợp của ng-mô hình mà tôi không có một biến được xác định trước trong bộ điều khiển của tôi? Chỉ tò mò thôi. –

+0

Tôi tin rằng ion-nội dung & ion-footer làm tạo ra một phạm vi con .. & khi bạn tuyên bố '$ scope.data = {}' trong bộ điều khiển của bạn & làm truy cập tài sản bên trong của nó .. đó sẽ làm phạm vi thừa kế từ cha mẹ .. Tôi có thể thêm câu trả lời không? –

Trả lời

7

Tôi tin ion-footer & ion-content tạo phạm vi con mới là Prototypically inerherit từ hiện tại phạm vi. Dưới mã ionic sẽ cho bạn thấy minh hoạ tốt hơn về cách nó hoạt động bên trong, scope: true, có trách nhiệm tạo ra một phạm vi con mới.

.directive('ionContent', [ 
    '$parse', 
    '$timeout', 
    '$ionicScrollDelegate', 
    '$controller', 
    '$ionicBind', 
function($parse, $timeout, $ionicScrollDelegate, $controller, $ionicBind) { 
    return { 
    restrict: 'E', 
    replace: true, 
    transclude: true, 
    require: '^?ionNavView', 
    scope: true, //<-- this creates a prototypically inerherited scope 
    template: 
    '<div class="scroll-content">' + 
     '<div class="scroll"></div>' + 
    '</div>', 

Bạn cần phải sử dụng . chú thích sẽ khắc phục vấn đề của bạn

Ví dụ.

Nếu bạn đang sử dụng biến như nguyên thủy như

$scope.volume = 5 

Sau đó, bạn cần phải sử dụng:

$scope.data = { 'volume' : 5} 

Angular Prototypal Scope Inheritance

4

Giải thích câu trả lời trong nhận xét của pankajparkar:

chỉ thị nội dung ion có phạm vi mới. Nó hoạt động bằng cách sử dụng ký hiệu dấu chấm (quan trọng khi giao dịch với phạm vi thừa kế)

Đó là lý do tại sao nó hoạt động với ng-mô hình = "data.model1

Vui lòng tham khảo:

AngularJS documentation on scopes

Egghead video

Các vấn đề liên quan