Javascript AnjularJS在按下按钮后获取文本框的值
我通过控制器中的ajax请求设置文本框的值,如下所示:Javascript AnjularJS在按下按钮后获取文本框的值,javascript,angularjs,Javascript,Angularjs,我通过控制器中的ajax请求设置文本框的值,如下所示: $http({method: 'GET', url: url}).success(function(data) { $scope.valzz = data; $scope.company = $scope.valzz[0].Company; }); 然后在我的html中: <label class="item item-input ite
$http({method: 'GET', url: url}).success(function(data) {
$scope.valzz = data;
$scope.company = $scope.valzz[0].Company;
});
然后在我的html中:
<label class="item item-input item-stacked-label">
<span class="input-label">Company :</span>
<input type="text" placeholder="Company" value="" ng-model="company">
</label>
<button class="button button-positive" style="margin-top:10px;" ng-click="saveChanges()">
Save Changes
</button>
为什么$scope.company不是文本框的新值?我做错什么了吗?很抱歉,如果我是角度角度的新手请尝试删除值=
HTML:
你没有那个模型的观察者
$scope.$watch('company', function(company) {
console.log(company);
}
或者在模板中,可以插值值:
{{company}}
然后你可以在html页面上看到它的变化,因为angular会在幕后监视它需要把这个.company not$scope请在$http调用之前定义$scope.company
app.controller('myCtrl', function($scope, $http){
$scope.company = null; // <--
$http({method: 'GET', url: url}).success(function(data) {
$scope.valzz = data;
$scope.company = $scope.valzz[0].Company;
});
}
因为,一旦呈现了部分,它将只获取$scope中定义的属性。之后,如果在$scope中添加了任何属性,则需要调用$apply
希望这能对您有所帮助。我假设您的$scope工作正常,并且您已经在应用程序中初始化了控制器,并且链接到了正确的控制器文件。请将您的代码与我这里的代码进行比较,因为它工作正常 HTML:
编辑:尝试将company传递给saveChanges函数这是一个包含30个左右字段的表单,我真的需要全部通过吗?nvm哈哈,你能添加更多的代码让我看看吗?它应该可以工作,因为它是双重绑定的,即模型和views@sebenalern这就是真正的mate,我只取出了其他29个变量和文本框Haastill没有新的值:你能有一个基本的小提琴,这样我就可以在那里调试它吗?
$scope.$watch('company', function(company) {
console.log(company);
}
{{company}}
app.controller('myCtrl', function($scope, $http){
$scope.company = null; // <--
$http({method: 'GET', url: url}).success(function(data) {
$scope.valzz = data;
$scope.company = $scope.valzz[0].Company;
});
}
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<script src ="controller.js"></script>
</head>
<body>
<div ng-app="myApp" ng-controller="testController">
<form>
<label class="item item-input item-stacked-label">
<span class="input-label">Company :</span>
<input type="text" placeholder="Company" ng-model="company">
</label>
<button class="button button-positive" style="margin-top:10px;" ng-click="saveChanges()">
Save Changes
</button>
</form>
</div>
</body>
</html>
(function(){
'use strict';
var app = angular.module('myApp', []);
app.controller('testController', [ '$scope', function ($scope){
$scope.saveChanges=function(){
alert($scope.company);
};
}]);
})();