[英]How to pass array from service function to scope in controller (AngularJs)?
[英]how do i pass scope from controller to service in angularjs?
我有以下控制器:
'use strict';
/* Controllers */
angular.module('stocks.controllers', []).
controller('MyCtrl1', ['$scope', '$http', 'stockData', function MyCtrl1 ($scope, $http, stockData) {
$scope.submit = function() {
$scope.info = stockData.query();
console.dir($scope.info);
}
}]);
我想將一個名為ng-model="symbol_wanted"
的綁定ng模型傳遞給以下服務...
'use strict';
/* Services */
angular.module('stocks.services', ['ngResource']).factory('stockData', ['$resource',
function($resource){
return $resource('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22YHOO%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json', {}, {
query: {method:'GET', isArray:false}
});
}]);
如何連接控制器的范圍以傳入服務? 謝謝!
我如何將范圍從控制器傳遞到angularjs中的服務?
你不能將$ scope注入服務,沒有Singleton $ scope這樣的東西。
我想將我視圖中名為ng-model =“symbol_wanted”的綁定ng模型傳遞給以下服務...
您可以通過以下方式調用服務並傳遞參數:
.factory('stockData', ['$resource', '$q', function ($resource, $q) {
var factory = {
query: function (value) {
// here you can play with 'value'
var data = $resource('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22YHOO%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json', {}, {
query: {
method: 'GET',
isArray: false
}
});
var deferred = $q.defer();
deferred.resolve(data);
return deferred.promise;
}
}
return factory;
}]);
所以我們稱之為服務,並得到這樣的承諾:
stockData.query(value) // <-- pass value
.then(function (result) {
$scope.data = result;
}, function (result) {
alert("Error: No data returned");
});
順便說一下,我建議你使用$http.get
:
演示小提琴
您的ng-model
值將自動成為范圍屬性。 因此,您可以在控制器中使用它來獲取當前值:
$scope.symbol_wanted;
所以,假設您有一個函數來處理控制器中的點擊:
$scope.handleMyClick = function() {
stockData.query($scope.symbol_wanted);
}
您可以使用作用域屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.