Tôi cần chuyển một biến cho một bộ điều khiển khác. Tôi có mã sau liên quan đến ListCtrl:
<a href="#items" data-router="article" ng-click="changeListName('metro')">
Liên kết sẽ đến một bộ điều khiển khác, ItemCtrl.
Tôi muốn chuyển một biến cho ItemCtrl. Tôi đã nghĩ đến việc sử dụng một dịch vụ có tên là SharedProperties:
service('sharedProperties', function () {
var list_name = '';
return {
getListName: function() {
return list_name;
},
setListName: function(name) {
list_name = name;
}
};
});
Khi liên kết được nhấp, tôi gọi sự kiện nhấp chuột theo góc để kích hoạt chức năng sau:
$scope.changeListName = function(name) {
sharedProperties.setListName(name);
};
Tuy nhiên, ng-click dường như không thay đổi giá trị tài sản chung của tôi ...
CẬP NHẬT
Tôi đặt một cảnh báo bên trong chức năng được kích hoạt bởi ng-click và cảnh báo được kích hoạt, đúng như vậy.
Tuy nhiên, khi tôi viết hàm của mình như thế này:
$scope.changeListName = function(name) {
sharedProperties.setListName(name);
};
Nó không hoạt động ... có vẻ như 'sharedProperties.setListName (name);' không được thực thi ...
Nếu tôi đặt nó bên ngoài hàm với một tên giả (ví dụ: metro), nó hoạt động ..
CẬP NHẬT 3
Tôi đã thử nhiều thứ và tôi khá tự tin rằng vấn đề là với chức năng này:
$scope.changeListName = function(list_name) {
sharedProperties.setListName(list_name);
};
Bạn có biết tại sao điều này lại xảy ra không?
ng-ref
vàhref
,ng-click
được kích hoạt và kích hoạt chức năng của tôi. Tôi đã cập nhật câu trả lời của mình để phản ánh vấn đề của tôi tốt hơn.