gpt4 book ai didi

javascript - AngularJS 将对象从主 Controller 传递到其他 Controller

转载 作者:行者123 更新时间:2023-11-27 22:44:28 24 4
gpt4 key购买 nike

我是 Angularjs 和 Ionic 的新手。我目前正在构建我的第一个应用程序,我想知道,有什么方法可以在主 Controller 中注入(inject)表达式并在所有其他 Controller 中使用它们。

因此,不要在每个 Controller 中键入 $scope、$http、$Ionicpopup。我想将其放入我的主 Controller 中,并在所有其他 Controller 中使用它们。

var app=angular.module('app.controllers', []);

你能告诉我这个叫什么吗?

最佳答案

我们通常使用服务在 Controller 之间进行通信。

在下面的示例中,我们创建animalService,并将其注入(inject)到两个 Controller 中。然后我们使用$watch来监控变化。

http://plnkr.co/edit/hfKuxJO2XZdB6MsK7Ief

(function () {

angular.module("root", [])
.controller("leftAnimal", ["$scope", "animalService",
function ($scope, animalService) {

$scope.findNewAnimal = function () {
var randNum = Math.floor(Math.random() * animalPool.length);
$scope.animal = animalPool[randNum];
console.log("Left Click Index: " + randNum);
animalService.setAnimal(randNum);
};

$scope.$watch(function () {
return animalService.getAnimal();
}, function (value) {
$scope.animal = animalPool[value];
});
}
])
.controller("rightAnimal", ["$scope", "animalService",
function ($scope, animalService) {

$scope.findNewAnimal = function () {
var randNum = Math.floor(Math.random() * animalPool.length);
$scope.animal = animalPool[randNum];
console.log("Right Click Index: " + randNum);
animalService.setAnimal(randNum);
};

$scope.$watch(function () {
return animalService.getAnimal();
}, function (value) {
$scope.animal = animalPool[value];
});
}
])
.factory("animalService", [function () {
var index = 0;
function getAnimal() {
return index;
}
function setAnimal(newIndex) {
index = newIndex;
}
return {
getAnimal: getAnimal,
setAnimal: setAnimal,
}
}]);

var animalPool = [{
name: "Baby Quetzal",
img: "http://i.imgur.com/CtnEDpM.jpg",
baby: true
}, {
name: "Baby Otter",
img: "http://i.imgur.com/1IShHRT.jpg",
baby: true
}, {
name: "Baby Octopus",
img: "http://i.imgur.com/kzarlKW.jpg",
baby: true
}];
})();
<!DOCTYPE html>
<html ng-app="root">

<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<link data-require="bootstrap-css@3.3.6" data-semver="3.3.6" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9"></script>
<script src="app.js"></script>
</head>

<body>
<div class="row">
<div class="text-center">
<h2>Pick an Animal</h2>
</div>
<div ng-controller="leftAnimal" class="col-md-6">
<div class="animalImage">
<img class="img-center" ng-src="{{animal.img}}"/>
</div>
<div class="animalName">{{animal.name}}</div>
<div class="animalDescription">{{animal.description}}</div>
<button type="button" ng-click="findNewAnimal()"
class="btn btn-info img-center">
Change
</button>
</div>
<div ng-controller="rightAnimal" class="col-md-6">
<div class="animalImage">
<img class="img-center" ng-src="{{animal.img}}" />
</div>
<div class="animalName">{{animal.name}}</div>
<div class="animalDescription">{{animal.description}}</div>
<button type="button" ng-click="findNewAnimal()"
class="btn btn-info img-center">
Change
</button>
</div>
</div>
</body>

</html>

关于javascript - AngularJS 将对象从主 Controller 传递到其他 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38517361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com