2013-10-16 20 views
15

Theo quan điểm của tôi, tôi có một đầu vào, một khoảng và một nút như vậy:

<script type="text/ng-template" id="myTemplate.html"> 
    <input type="text" ng-model="phoneNumber"> 
    <span>{{ phoneNumber}}</span> 
    <input type="button" ng-click="click()"> 
</script> 

Khi gõ vào hộp văn bản, nội dung của các cập nhật span như mong đợi. Nhưng khi nhấp vào nút, phoneNumber đã không cập nhật bên trong bộ điều khiển:

app.controller('myPopopCtrl', ['$scope', '$modalInstance', 
    function ($scope, $modalInstance) { 
     $scope.phoneNumber= '';  

     $scope.click = function() { 
     alert($scope.phoneNumber); // alerts only '' 
     }; 

Có một số sai lầm newbe bạn có thể thực hiện trong góc mà làm cho những thứ không được cập nhật trên $scope bên trong một bộ điều khiển?

Có một số vấn đề về phạm vi $ với angular-ui modal Tôi cần phải biết?

Edit:

Nó có vẻ như phoneNumber được tạo ra trong 2 phạm vi. Một lần trong phạm vi ở mũi tên màu xanh ở đó phoneNumber: '' và một lần trong phạm vi con ở mũi tên màu đỏ. Quan điểm sử dụng phoneNumber trong phạm vi trẻ em và bộ điều khiển sử dụng phoneNumber trong phạm vi cha mẹ ...

enter image description here

Tại sao hai lĩnh vực tạo ra?

+0

Phương thức nhấp chuột được xác định ở đâu? – Chandermani

+0

phương thức nhấp chuột được định nghĩa bên trong popupController, (tôi đã cập nhật câu hỏi để làm rõ) – Cotten

+0

Sau đó, các tùy chọn tốt hơn cho bạn sẽ là truyền một đối tượng thay vì chuỗi như chuỗi xác nhận tạo ra một chuỗi mới trong phạm vi con. Tạo một cái gì đó như '$ scope.phone = {number: null}' và truyền nó theo. – Chandermani

Trả lời

15

ng-include tạo phạm vi mới. Vì vậy, thông qua một đối tượng thay vì chuỗi

$scope.phone={number:null}

Mẫu sau đó trông giống như

<script type="text/ng-template" id="myTemplate.html"> 
    <input type="text" ng-model="phone.number"> 
    <span>{{ phone.number}}</span> 
    <input type="button" ng-click="click()"> 
</script> 

Nhìn vào wiki này để hiểu rõ các vấn đề với thừa kế nguyên chủng.

+1

sẽ không bao giờ đoán được những vấn đề đó tồn tại trong góc cạnh .. Cảm ơn bạn :) – Cotten

+0

Đây là giờ sau giờ đau khổ cố gắng tìm ra lý do tại sao phương thức của tôi không hoạt động cho đến khi tôi vấp phải điều này, Cảm ơn bạn. – ThrowsException

1

Đã cùng một vấn đề và sau một vài thí nghiệm tôi đã giải quyết trên viết

<input type="text" ng-model="$parent.phoneNumber"> 

Bằng cách này đầu vào được ràng buộc với phạm vi màu xanh, đó là chính xác những gì bạn muốn.

Cách khác là khởi chạy phoneNumber với giá trị true-ish. Hãy thử $scope.phoneNumber= '123'; - đã làm việc tốt cho tôi.

Góc dường như đi bộ lên cây phạm vi tìm kiếm thuộc tính để liên kết. Nếu không có gì được tìm thấy - nó liên kết với phạm vi bên trong nhất, phạm vi màu đỏ trong pic của bạn. Như câu trả lời khác cho thấy - phạm vi màu đỏ này được tạo ra bởi ng-include, như là một con của phạm vi $ của bộ điều khiển.

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