我是角色的新手... 在下面的代码我需要在Angular Factory(测试)中使用变量范围$scope.slugname
..
var myApp = angular.module('myApp', ['infinite-scroll']);
myApp.controller('DemoController', function($scope, Test) {
$scope.slugname ="slugname";
$scope.test = new Test();
});
myApp.factory('Test', function($http) {
var test = function() {
this.items = [];
this.busy = false;
this.after = '';
};
Test.prototype.nextPage = function() {
if (this.busy) return;
this.busy = true;
var url = 'baseURL/?slug='+$scope.slugname; //<-- I need to use variable($scope.slugname) here
$http.jsonp(url).success(function(data) {
var items = data.data.children;
for (var i = 0; i < items.length; i++) {
this.items.push(items[i].data);
}
this.after = this.items[this.items.length - 1].id;
this.busy = false;
}.bind(this));
};
return Test;
});
答案 0 :(得分:1)
不能在工厂内使用范围变量。或者,您可以将范围变量作为参数传递给工厂函数。
myApp.controller('DemoController', function($scope, Test) {
$scope.slugname ="slugname";
$scope.test = new Test($scope.slugname );
});
myApp.factory('Test', function($http) {
var test = function() {
this.items = [];
this.busy = false;
this.after = '';
};
Test.prototype.nextPage = function(name) {
if (this.busy) return;
this.busy = true;
var url = 'baseURL/?slug='+$scope.slugname;
$http.jsonp(url).success(function(data) {
var items = data.data.children;
for (var i = 0; i < items.length; i++) {
this.items.push(items[i].data);
}
this.after = this.items[this.items.length - 1].id;
this.busy = false;
}.bind(this));
};
return Test;
});