我想从服务方法返回值到模板中使用和处理的范围。
但我发现,我不能在服务中使用范围。 我可以使用Rootscope,但我认为,这不是正确的方法。
如何轻松地将服务中的值设置为范围?
感谢您的任何建议。
这是代码:
/**
* Init autocomplete dropdown menu for project list
*/
this.getProjectListForAutocomplete = function (container, options) {
$("#autocompleteProjects").kendoAutoComplete({
dataSource : {
type: "json",
serverFiltering: true,
transport: {
read: function (options) {
console.log("List");
console.log(options.data);
ApiService.doHttpRequest(
"POST",
$rootScope.apiBaseUrl + "gpsaddress/search",
requestParams
)
.success(function (data, status, headers, config) {
break;
}
})
.error(function (data, status, headers, config) {
});
}
}
},
dataTextField: "city" ,
dataValueField: "address.city",
filter: "contains",
minLength: 1,
change : function (e) {
console.log("change");
//console.log(e);
},
select : function (e) {
console.log("select");
var dataItem = this.dataItem(e.item.index());
console.log(dataItem);
// Here i need set scope in controller
}
});
};
答案 0 :(得分:4)
请参阅下面的演示:
var app = angular.module('app', []);
app.service('dataService', function() {
var _person = {
name: "jack",
surname: "doe"
}
return {
person: _person
}
})
app.controller('fCtrl', function($scope, dataService) {
$scope.person = dataService.person;
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="fCtrl">
<p>First Name: {{person.name}}</p>
<p>Last Name: {{person.surname}}</p>
Edit First Name:<input type: "text" ng-model="person.name" />
</div>
</div>
&#13;
答案 1 :(得分:1)
第一种方法:
在服务中:
serviceMethod: functon(scope){
//processing
scope.scopeVar=data;
}
控制器中的:
service.serviceMethod($scope);
当控制器调用serviceMethod
的{{1}}时。处理数据后,将其分配给scope.scopeVar.here service
引用$ scope对象。(我们将对象$ scope传递给scope
方法)
第二种方法 -
在服务中:
serviceMethod
控制器中的:
serviceMethod: functon(){
//processing
returndata;
}
答案 2 :(得分:0)
你没有&#34; set-scope-variable-from-service&#34;你绑定它。它真的是一样的语义。 @sss是完全正确的