我想从后面的代码或C#调用angular的binddata()函数。是否可以在asp.net中使用。
$scope.bindAllData = function () {
$scope.getFundedRatio.investors = $scope.investors;
$scope.getFundedRatio.taxRates = $scope.taxRateInfo;
$scope.getFundedRatio.incomeAssets = $scope.incomeAssetInfo;
$scope.getFundedRatio.futureSavings = $scope.futureSavingInfo;
$scope.getFundedRatio.spendingGoals = $scope.spendingGoalsInfo;
$scope.getFundedRatio.portfolioAssets = $scope.portfolioAssetsInfo;
$scope.getFundedRatio.privateAssets = $scope.privateAssetInfo;
}
答案 0 :(得分:0)
您只能从C#codebehind调用JavaScript函数,这些函数可直接在window变量上使用。 由于$ scope只能在控制器内部访问,因此不能直接访问window对象。但是,您可以在DOM中创建一个选择器元素 - 比如给任何元素一个id选择器(该元素应该在您想要调用范围方法的同一范围内)。现在,您可以使用以下方法获取元素的范围: HTML模板:创建一个带id的虚拟div。该div应存在于同一控制器范围内。
<div id='div1'></div>
您可以使用以下方法访问控制器javascript外的此元素的范围:
var elementScope = angular.element(document.getElementById('div1')).scope()
现在您将能够访问任何范围方法或属性。
elementScope.bindAllData();
从C#代码隐藏中,您可以使用以下命令直接调用javascript代码:
Page.ClientScript.RegisterStartupScript(this.GetType(),"CallMyScopeFunction","angular.element(document.getElementById('div1')).scope().bindAllData()",true);
希望这有效!
答案 1 :(得分:0)
尝试使用webservices或wcf服务来托管逻辑并使用控制器中的http get方法来使用它们
答案 2 :(得分:-1)
我建议你采用以下方法: 尝试使用SignalR和AngularJS的组合。首先,安装SignalR Nuget-package。
Install-Package Microsoft.AspNet.SignalR
之后,使用SignalR广播消息创建一个Hub:
public class SampleHub : Hub
{
public void Send(string message)
{
// Call the broadcastMessage method to update clients.
Clients.All.broadcastMessage(message);
}
}
在任何ASP.NET后端方法中,您可以使用以下代码段来通知您的Angular方法:
var context = GlobalHost.ConnectionManager.GetHubContext<SampleHub>();
context.Clients.All.broadcastMessage("BindAllData");
将其插入前端的脚本部分:
<script type="text/javascript" src="assets/libs/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="assets/libs/jquery.signalR.min.js"></script>
<script src="/signalr/hubs"></script>
在客户端,使用以下代码:
var sampleHub = jQuery.connection.sampleHub;
sampleHub.client.broadcastMessage = function (message) {
Console.log(message); // Will output "BindAllData"
// Your BindAllData-code here.
};
jQuery.connection.hub.start();
我希望这适合你。