我有一个暴露于$ scope的对象,并且附加了属性。
我在控制器中访问此对象并调用一个不起作用的服务。
我需要添加的是对象的新属性(它将作为属性附加到对象的数组),以便更新的对象返回到控制器,我可以访问此数组的元素使用数据表达式标记{{ }}
。
我想详细了解如何以正确的方式进行此类操作以及可能的方法。
答案 0 :(得分:3)
只需将数组添加到对象中即可。
$scope.myobj = {};
...
// sometime later
var numbers = [1,2,3];
$scope.myobj.numbers = numbers;
编辑:
回答有关服务范围的问题。服务无法访问范围。通常,您会向服务部门询问IE数据。但是您的服务可以执行任何操作,例如添加2个数字,或者在您的情况下创建需要附加到对象的数组。
module.service('MyService', function() {
this.add = function(number1, number2) {
return number1 + number2;
}
this.createMyArray = function() {
// pass in whatever you need to this service in order
// to create the array you need.
// example of just returning a hard coded array
return [1,2,3];
}
});
然后,您可以将服务注入到您想要修改范围的控制器中。
app.controller('MyController', function($scope, MyService) {
$scope.add = function(number1, number2) {
// Lets use our service to add these numbers and
// assign result to scope variable
$scope.answer = MyService.add(number1, number2);
}
$scope.myobj = {};
$scope.makeArray = function() {
// lets use our service again to create an array
// this time lets add it to a scope object that already exists.
$scope.myobj.numbers = MyService.createMyArray();
}
});
很多时候服务用于从服务器获取/更新内容,因此您将看到许多进行http get / post / put / delete调用的示例。然后,您可以从控制器中使用这些服务来获取数据。但同样,您不仅限于此,您的服务也可以简单地保存一些静态数据或辅助函数。