2013-05-16 26 views
7

Khi tôi đẩy một mục vào một mảng, chế độ xem sẽ không làm mới danh sách.Góc: Đẩy mục vào danh sách không cập nhật giao diện

bảng:

<tbody id="productRows"> 
    <tr data-ng-repeat="product in products | filter: search"> 
     <td>{{ product.Code}}</td> 
     <td colspan="8">{{ product.Name}}</td> 
    </tr> 
</tbody> 

dạng:

<form data-ng-submit="submitProduct()"> 
    Code: 
    <br /> 
    <input type="text" required data-ng-model="product.Code"/> 
    <br /> 
    <br /> 
    Naam: 
    <br /> 
    <input type="text" required data-ng-model="product.Name"/> 
    <br /> 
    <input type="submit" value="Opslaan" /> 
</form> 

submitProduct trong điều khiển:

$scope.submitProduct = function() { 
    console.log('before: ' + $scope.products.length); 

    $scope.products.push({Code: $scope.product.Code, Name: $scope.product.Name}); 
    console.log('after:' + $scope.products.length); 
    console.log($scope.products); 

    $scope.showOverlay = false; 
}; 

Như bạn thấy, tôi đăng nhập tổng sản phẩm trong mảng và nó hoạt động như Tôi mong chờ. Điều duy nhất không làm những gì tôi mong đợi là nội dung của bảng của tôi, điều đó không hiển thị giá trị mới.

Tôi phải làm gì, vì vậy hàng mới được hiển thị trong bảng?

+0

Có vẻ như nó sẽ hoạt động. Thêm một jsfiddle hoặc plnkr xin vui lòng. –

+1

[plnkr] (http://plnkr.co/edit/UXvtEhNbiilRn6DjX93P?p=preview) với mã của bạn hoạt động tốt? Bạn có định nghĩa $ scope.products đúng không? –

+0

Mã nào đang gọi 'submitProduct()'? Nếu mã này đang chạy "bên ngoài" Góc, bạn sẽ cần phải gọi '$ scope. $ Apply()' ở cuối phương thức 'submitProduct()' của bạn để làm cho Angular chạy một chu trình tiêu hóa, điều này sẽ gây ra khung nhìn của bạn cập nhật. –

Trả lời

5

Cảm ơn câu trả lời và nhận xét. Vấn đề là ở một nơi khác. Trong số routeProvider Tôi đã khai báo một bộ điều khiển. Tôi cũng có một chỉ thị ng-controller trong div của tôi. Vì vậy, bộ điều khiển của tôi được thực hiện hai lần. Khi tôi xóa chỉ thị ng-controller, mọi thứ chỉ hoạt động như vậy :)

+0

Cảm ơn! , nó cũng giải quyết vấn đề của tôi, tôi tuyên bố một bộ điều khiển trong routeProvider trong khi cơ thể của tôi đã có một thuộc tính ng-controller. Làm thế nào bạn biết đó là vấn đề? –

+0

@DanielFlores Vâng, tôi nhìn vào mã của tôi từ đầu cho đến cuối. Vì vậy, tôi bắt đầu với ap..module, app.routes, tất cả các cách để xem của tôi. Và khi tôi nhìn vào quan điểm của tôi, tôi nhận thấy rằng tôi đã tuyên bố cùng một bộ điều khiển hai lần: trong tuyến đường của tôi và theo quan điểm của tôi. – Martijn

+0

chương trình tốt, cảm ơn – jcc

5

Tôi không thể thấy phần còn lại của mã của bạn, nhưng đảm bảo rằng $scope.products được xác định trong bộ điều khiển của bạn.

Xem điều này example.

Việc bổ sung duy nhất tôi thực hiện để mã mà bạn cung cấp là:

$scope.products = []; 

Nếu điều này không giúp thì xin vui lòng cung cấp thêm thông tin.

+0

Giải pháp của bạn làm việc cho tôi. Tôi có cùng một vấn đề, trong đó các mục không bị đẩy đến $ scope.lists.push ({}); Tôi đã khai báo $ scope.lists = []; trên đỉnh và nó hoạt động như một sự quyến rũ. Cảm ơn. –

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