Javascript 如何使用webmethod在angular中单击输入按钮时保持绑定
我正在尝试使用已知的工作webmethod(.net)更新我的角度模型Javascript 如何使用webmethod在angular中单击输入按钮时保持绑定,javascript,jquery,angularjs,webmethod,Javascript,Jquery,Angularjs,Webmethod,我正在尝试使用已知的工作webmethod(.net)更新我的角度模型 我成功地从登录到控制台的webmethod获取数据 它也会更新输入框的值 但这不会更新我的角度模型绑定。 我做错了什么 HTML 代码隐藏 [WebMethod] [ScriptMethod(UseHttpGet = true)] public static string GetCallData() { String Calls = "34"; retu
- 我成功地从登录到控制台的webmethod获取数据
- 它也会更新输入框的值
- 但这不会更新我的角度模型绑定。
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string GetCallData()
{
String Calls = "34";
return Calls;
}
Ajax调用
$(document).ready(function () {
$('.btn-primary').click(function () {
$.ajax({
type: "GET",
url: "Stats.aspx/GetCallData",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$('.txtCalls').text(response.d);
console.log(response.d);
},
failure: function (response) {
alert(response.d);
console.log(response.d);
}
});
});
这是因为这是一个JQUERY/Ajax调用,而不是角度调用。您需要从角度控制器进行调用,并使用
$http.get
而不是$.ajax
您的按钮.btn primary
应该添加ng click=“somethod()”
而不是JQuery on('click')
。比如:
<input class="btn-primary" ng-click="someMethod() />
此外,angular是一个MVVM框架,作为此模式的一部分,您可以更新模型(数据),而不是视图html>form>input
控件。双向绑定将为您完成其余工作。如果您从“外部”angular更改值,则需要对angular范围的引用,然后调用范围。$apply()
例如:
var el = $('.txtCalls').get(0);
angular.element(el).scope().$apply();
但是,如果可能的话,通常最好使用angularJS提供的代码/过程(如$http.get
)在angularJS控制器或服务或指令中使用angularJS$http.post,而不是$.ajax。这是一个get调用,而不是post btw,在y post中也有解释,然后使用$http.get!!angular.js文档中的所有内容:这是一个令人鼓舞的糟糕做法。BTW[ScriptMethod(UseHttpGet=true]缺少右括号)
<input class="btn-primary" ng-click="someMethod() />
$scope.someMethod = function(){ $http.get(...) };
var el = $('.txtCalls').get(0);
angular.element(el).scope().$apply();