2015-08-10 22 views
7

Sau khi chúng tôi nâng cấp AngularJS của dự án từ 1.2.28 lên 1.4.3 ngRepeat bên trong một phạm vi bị cô lập dừng đánh giá biến. Nó bắt đầu in "{{variableName}}" thay vì giá trị.AngularJS 1.4.3 ngRepeat in {{variableName}} thay vì giá trị khi được sử dụng trong chỉ thị với phạm vi cô lập

Edit: vấn đề đã được gây ra bởi một miếng vá cho iOS8 Webkit lỗi: https://github.com/angular/angular.js/issues/9128

vấn đề này xuất phát từ các yếu tố gói HTML xung quanh ngRepeat. Nếu tôi gỡ bỏ nó, nó hoạt động tốt. Nếu tôi loại bỏ các phạm vi cô lập nó hoạt động quá.

Và điều kỳ lạ nhất là tôi đã thử phương pháp tương tự trên CODE PEN và nó hoạt động khá tốt nhưng không phải trên dự án của chúng tôi. Đây là mã codepen: http://codepen.io/anon/pen/YXgYjN

Dưới đây là bộ điều khiển:

app.controller('CustomersController', ['$scope', function ($scope) { 

    $scope.customers = [ 
    { 
     name: 'David', 
     street: '1234 Anywhere St.' 
    }, 
    { 
     name: 'Tina', 
     street: '1800 Crest St.' 
    }, 
    { 
     name: 'Michelle', 
     street: '890 Main St.--' 
    } 
    ]; 
}]); 

Và chỉ thị:

app.directive('myIsolatedScope', function() { 
    return { 
    restrict: 'E', 
    replace: true, 
    scope: { 
     customers: '=' 
    }, 
    template: 
     '<p>' + 
     '<span ng-repeat="(key, customer) in customers" class="{{customer.name}}">Name: {{customer.name}}| Street: {{customer.street}}<br /></span>' + 
     '</p>', 
    controller: function($scope, $element, $attrs) {}, 
    compile: function() {}, 
    link: function($scope, $element, $attrs) {} 
    }; 
}); 

HTML:

<body ng-app="directivesModule" ng-controller="CustomersController"> 
<h3>Custom Directive</h3> 
<my-isolated-scope customers="customers"></my-isolated-scope> 
</body> 
+1

nếu nó hoạt động trên bút mã chứ không phải trên dự án của bạn, điều đó có nghĩa là ứng dụng của bạn phải bị rơi ở một nơi khác và điều đó ngăn cản chỉ thị thực thi đúng cách. không được thay thế). Bạn có lỗi gì trong bảng điều khiển javascript? – Eloims

+0

@Eloims, không có lỗi nào trong bảng điều khiển của trình duyệt. Tôi hy vọng ai đó đã có vấn đề như vậy và có thể cho tôi một số hướng dẫn để tìm kiếm nguồn của vấn đề. –

+0

Nếu codepen không tái tạo lỗi, chúng tôi cần thêm chi tiết. Bạn đưa phần tử html vào thành phần nào? Một số phần tử html mặc định được chuyển thành tương đương chỉ thị của chúng trong góc cạnh, có thể gây rối với hệ thống phân cấp phạm vi của bạn. – doldt

Trả lời

0

Tôi đã cố gắng mẫu của bạn trong phiên bản Angular JS 1.4.x, nó hoạt động tốt cho tôi. Tham khảo liên kết Plunker.

Mã mẫu cũng như:

<html> 
<head> 
    <title>View</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <script src= "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script> 

    <script> 
     var app = angular.module('directivesModule' ,[]); 
app.controller('CustomersController', ['$scope', function ($scope) { 

    $scope.customers = [ 
    { 
     name: 'David', 
     street: '1234 Anywhere St.' 
    }, 
    { 
     name: 'Tina', 
     street: '1800 Crest St.' 
    }, 
    { 
     name: 'Michelle', 
     street: '890 Main St.--' 
    } 
    ]; 
}]); 

app.directive('myIsolatedScope', function() { 
return { 
    restrict: 'E', 
    replace: true, 
    scope: { 
     customers: '=' 
    }, 
    template: '<p>' + 
     '<span ng-repeat="(key, customer) in customers" class="{{customer.name}}">Name: {{customer.name}}| Street: {{customer.street}}<br /></span>' + 
    '</p>', 
    controller: function($scope, $element, $attrs) { 

    }, 

    compile: function() { 

    }, 

    link: function($scope, $element, $attrs) { 

    } 
}; 
}); 
    </script> 
</head> 
<body ng-app="directivesModule" ng-controller="CustomersController"> 
<h3>Custom Directive</h3> 
<my-isolated-scope customers="customers"></my-isolated-scope> 
</body> 
</html> 

Chỉ cần cho thông tin của bạn: AngularJs đã ngừng hỗ trợ cho trình duyệt IE 8 từ phiên bản 1.3. Tham khảo AngularJS liên kết. Dừng tốt hơn hỗ trợ IE 8 cho dự án hoặc Sản phẩm thay vì dành thời gian để tìm giải pháp thay thế.

+0

vâng tôi không hiểu câu nói của bạn. Bây giờ tôi đã cố gắng sử dụng plunker, nó hoạt động tốt cho tôi. Vui lòng kiểm tra bài đăng. – Sathish

+0

Cảm ơn bạn @sathish Sự cố xảy ra trong Chrome và Firefox. Tôi không nói về IE8 chút nào. Xin lỗi vì đã giải thích sai và gây hiểu lầm cho bạn. –

+0

Tuy nhiên nó hoạt động tốt cho tôi, Bạn đã thử url plunker của tôi trong chrome hoặc firefox? – Sathish

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