Попытка сделать простой пример с услугой AngularJS.AngularJS: как показать API/переменные службы
Я хочу иметь некоторые переменные и функции в моей модели данных (услуге) и через контроллер, выставить их и привязать к виду.
Проблема в том, что контроллер/представление каким-то образом получает новый экземпляр модели, и я не могу понять, как это полезно, потому что я хочу использовать другие контроллеры/представления для просмотра тех же данных/API то же самое обслуживание, а не новый экземпляр каждый раз.
Вот пример на plunker: http://plnkr.co/edit/AKZLaT2HrkBPMkICsski?p=preview
/*****script.js******/
var app = angular.module('app', []);
app.service('myService', function() {
// my data here
var text = 'text',
text2 = 'text2';
// my function here
var copyText = function(){
console.log('BEFORE text: '+ text + ' text2: ' + text2);
text2 = text;
console.log('AFTER text: '+ text + ' text2: ' + text2);
};
// expose my variables/API here
return {
text: text,
text2: text2,
copyText: copyText
};
});
app.controller('myCtrl', [ '$scope', 'myService', function($scope, myService){
$scope.myService = myService;
}]);
/*****index.html******/
...
<div ng-controller="myCtrl">
<h1>angular service exposure</h1>
<input type="text" ng-model="myService.text">
<p>text: {{ myService.text }}</p>
<button ng-click="myService.copyText()">copy text to text2</button>
<p>text2: {{ myService.text2 }}</p>
</div>
если вы открываете консоль, при нажатии на кнопку, вы увидите «реальные» значения модели, до и после копирования текста в text2 , Которые не те, что я вижу в представлении от контроллера ...
ну, это не то, что я ищу. Вы сделали новую функцию внутри контроллера, чтобы вызвать ее из службы. Что это значит - привязать его к элементу? Это все тот же звонок, верно? Во-вторых, вы передаете новую переменную «sometext», чтобы внести изменения в text2. Я хочу иметь доступ к тем же двум переменным в сервисе от любого контроллера, а не создавать новые в каждом контроллере. Даже этот пример не работает с двумя контроллерами, я думаю, каждый из них увидит другую переменную «text» и «text2» ... Спасибо за ваше время в любом случае. – AntouanK
см. Мои изменения, передать модель как параметр в метод –
Не думаю, что вы можете написать 'myService.value' и убедиться, что у службы есть новое значение. Вы можете использовать '$ rootScope' или трансляцию, чтобы сообщить всем контроллерам об изменении. –