同じjsonデータを含むhtmlページの2つのセクションを表示しようとしていますが、異なる領域に配置されているため、両方を同じコントローラーにラップしたくありません。「Angular Service」でローカル json データを使用して、その概念をうまく実装しました。デモを参照してください。
<div ng-app="testApp">
<div ng-controller="nameCtrl">
<a href="#" ng-click="addName();">Add New</a>
<a href="#" ng-click="removeName();">Remove First</a>
<ul id="first" class="navigation">
<li ng-repeat="myname in mynames">{{myname.name}}</li>
</ul>
</div>
<div>
Lot of things in between
</div>
<ul id="second" class="popup" ng-controller="nameCtrl">
<li ng-repeat="myname in mynames">{{myname.name}}</li>
</ul>
JS
var testApp = angular.module('testApp', []);
testApp.service('nameService', function($http) {
var me = this;
me.mynames = [
{
"name": "Funny1"
},
{
"name": "Funny2"
},
{
"name": "Funny3"
},
{
"name": "Funny4"
}
];
//How to do
/*this.getNavTools = function(){
return $http.get('http://localhost/data/name.json').then(function(result) {
me.mynames = result.mynames;
return result.data;
});
};*/
this.addName = function() {
me.mynames.push({
"name": "New Name"
});
};
this.removeName = function() {
me.mynames.pop();
};
});
testApp.controller('nameCtrl', function ($scope, nameService) {
$scope.mynames = nameService.mynames;
$scope.$watch(
function(){ return nameService },
function(newVal) {
$scope.mynames = newVal.mynames;
}
)
$scope.addName = function() {
nameService.addName();
}
$scope.removeName = function() {
nameService.removeName();
}
});
次にやりたいことは、json ファイルへの http 要求を作成し、2 つのセクションにデータをロードすることです。追加または削除すると、両方の領域に反映されるはずです。
ポインタや既存のデモは非常に役立ちます。
ありがとう