在关注AngularJS tutorial on codeSchool并阅读一些StackOverflow问题后,我决定开始使用$scope
,以避免必须定义var self = this;
变量的麻烦。
问题是$scope
似乎没有绑定任何东西,当我使用它时没有任何作用。我不知道为什么,但如果我使用var self = this;
变量,我的代码将会起作用,即使理论上(根据我所知)$scope
也应该这样做......
让我们说我有一个页面,我想显示一个大的数字列表。我们还说我有分页,并且我希望每页的默认数量为4.我们还假设在每次请求服务器之后,我设置每页显示的数量到了4再次。
app.js
/*global angular, $http*/
(function() {
var app = angular.module("myNumbers", []);
app.directive("numberFilter", function() {
return {
restrict: "E",
templateUrl: "number-filter.html",
controller: function($scope, $http) {
$scope.filter = {
itemsPerPage: 4
};
$scope.makeRequest = function(numberList) {
console.log("Received submit order");
$http({
method: 'GET',
url: 'https://myNumberServer.com/api/v1/getPrimes',
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
}).then(function successCallback(response) {
numberList= response.data.entries;
$scope.totalPages = response.data.totalPages;
$scope.filter = {itemsPerPage: 4};
console.log("success!");
}, function errorCallback(response) {
console.log('Error: ' + response);
});
};
},
controllerAs: "filterCtrl"
};
});
})();
数filter.html
<form ng-submit="filterCtrl.makeRequest(myNumbers.numberList)">
<div >
<label for="items_per_page-input">Items per page</label>
<input type="number" id="items_per_page-input" ng-model="filterCtrl.filter.itemsPerPage">
</div>
<div>
<button type="submit">Submit</button>
</div>
</form>
有两种预期的行为应该发生,并且不要:
"Received submit order"
中看到我不知道。input
元素应初始化为4. 如果我使用var self = this;
技巧并将$scope
的所有提及替换为self
,则会发生这两种行为。
问题:
答案 0 :(得分:2)
您正在使用test {
reports.html.destination = file("$buildDir/reports/gradle")
....
语法,因此在使用时需要将模型分配给控制器对象本身,而不是$ scope
实施例
controllerAs