我附上了我的小提琴http://jsfiddle.net/gxbwk6dk/6/
我正在尝试在服务中做一些逻辑并将数据恢复到控制器。我可以得到一些简单的操作,如添加两个数字,但我没有从javascript对象获取find元素的数据? 请帮帮我
我的代码
var app = angular.module("myapp", []);
app.controller("myctrl", function ($scope, myservice) {
console.log("add of two " + myservice.addTwo(5, 7));
$scope.sum = myservice.addTwo(5, 7);
$scope.sampleObj = {
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
};
myservice.findElement($scope.sampleObj, 'GlossDef').then(function (data) {
$scope.elementObj = data;
console.log("find element 12 then ", data);
});
console.log("find element ", myservice.findElement($scope.sampleObj, 'GlossDef'));
console.log("find element 1 ", myservice.sample($scope.sampleObj));
myservice.sample($scope.sampleObj).then(function (data) {
console.log("find element 1 then ", data);
});
});
app.factory("myservice", function ($q, $timeout) {
return {
addTwo: addTwo,
findElement: findEle,
sample: sample
};
function sample(jsObject) {
var deferred = $q.defer();
$timeout(function () {
deferred.resolve(jsObject)
}, 5000);
return deferred.promise;
}
function addTwo(a, b) {
return a + b;
}
function findEle(jsObject, searchEle) {
var deferred = $q.defer();
for (obj in jsObject) {
console.log("obj " + obj + " mapobj " + jsObject[obj]);
if (obj === searchEle) {
console.log("element found " + obj);
deferred.resolve(jsObject[obj]);
}
if (typeof jsObject[obj] === "object") findEle(jsObject[obj], searchEle);
}
return deferred.promise;
}
});
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.min.js"></script>
<body ng-app="myapp" ng-controller="myctrl">
<input type="text" ng-model="name" />
<h2 ng-bind="name"></h2>
<table>
<tr ng-repeat="(key, value) in elementObj">
<td> {{key}} </td> <td> {{ value }} </td>
</tr>
</table>
</body>