AngularJS サービスを使用して簡単な例を作成しようとしています。
データモデル(サービス)にいくつかの変数と関数を持ち、コントローラーを介してそれらを公開し、ビューにバインドしたいと考えています。
問題は、コントローラー/ビューが何らかの形でモデルの新しいインスタンスを取得することです。他のコントローラー/ビューを使用して同じサービスの同じデータ/API を表示したいので、これがどのように役立つかを実際にはわかりません。毎回新しいインスタンス。
以下はプランカーの例です: 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 にコピーする前後のモデルの「実際の」値が表示されます。コントローラーからのビューに表示されるものではありません...