理解Angularjs中的$scope机制
我无法为自己澄清如何在Angularjs中处理$scope。虽然我已经用其他方式解决了当前的问题,但我仍然需要帮助来理解$scope的用法 我有以下表格(本例简化)。Index.html:理解Angularjs中的$scope机制,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我无法为自己澄清如何在Angularjs中处理$scope。虽然我已经用其他方式解决了当前的问题,但我仍然需要帮助来理解$scope的用法 我有以下表格(本例简化)。Index.html: <form class="form-horizontal" ng-controller="AddItemController as addItemCtrl"> <fieldset> <legend>New item</legend> <
<form class="form-horizontal" ng-controller="AddItemController as addItemCtrl">
<fieldset>
<legend>New item</legend>
<div class="form-group">
<label for="submittedBy" class="col-lg-2 control-label">Submitted by</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="submittedBy" ng-model="addItemCtrl.item.submitted_by" placeholder="Your name here">
</div>
</div>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<!--button class="btn btn-default">Cancel</button-->
<button type="submit" class="btn btn-primary" ng-click="addItemCtrl.addItem()">Submit</button>
</div>
</div>
</fieldset>
</form>
我只想从表单中获取数据,将其发送到服务器,获取响应,更新表,然后清除表单。最后一部分是我的问题。我现在使用this.item={}
来处理它。但是我确实想用$scope调用它,所以它应该是$scope.item={}
,然后我想把它移到addItem
函数中。不幸的是,这两种情况都不起作用
我有这个代码,它是按预期工作的,但似乎我只是运气好/运气不好,使它没有理解的机制
app.controller('ItemController', ['$scope','$http', function ($scope, $http) {
function getItems(){
$http({
url: "get_items",
method: "GET"
}).
success(function(data, status, headers, config) {
$scope.items = data;
});
}
getItems();
}]);`
更新。这就是我的AddItemController目前的样子:
app.controller("AddItemController", ['$scope','$http', function ($scope, $http) {
$scope.item = {};
this.addItem = function() {
$http({
url: "add_item",
method: "GET",
params: this.item
}).
success(function(data, status, headers, config) {
$scope.$$prevSibling.items = data;
$scope.addItemCtrl.item={};
});
}
}]);
它就像我想要的那样工作。但是我不喜欢
$scope.$$previsibling.items=data代码>语句,我用它来刷新由ItemController处理的表,有没有更优雅的方法呢?您不必使用getItem函数,您只需编写$http代码,它就可以正常工作,大约$scope,只是不要使用它,这里有点棘手,所有要生成的变量都只需使用$scope,然后像这样从$scope中获取
$scope.item;
$scope.item.getItem = function(){};
var item1 = $scope.item;
诸如此类。因为每个控制器都创建了自己的$scope,这就是为什么您要搞乱它,您要在其他控制器中更改数据scopes@NarekMamikonyan你的意思是:var scope=angular.element($(“#body”)).scope()代码>scope.items=数据代码>如果是这样,我已经在示例中重命名了它,这样它就不会与我的主issue@NarekMamikonyan那我就跟不上你了ItemController
负责该表,并使用其$scope
工作正常AddItemController
是为表单处理实现的,因此是的,它应该使用$scope拥有自己的$scope
。成功回调中的item={}
应该可以工作。你确定问题出在那个电话上吗?控制台中有任何错误吗?@bmleite它说有一个对象$scope,但是什么也没有发生,并且在我放置$scope.item={}
关于getItem的任何地方都没有显示错误。我知道,我只是在玩语法,在某个时候想将getItem移到外部,以便从其他控制器获得它。但我失败了,所以现在就这样,直到我重新开始。
$scope.item;
$scope.item.getItem = function(){};
var item1 = $scope.item;