Javascript 如何使用C#和Angular js在视图上显示数据
我有以下控制器:Javascript 如何使用C#和Angular js在视图上显示数据,javascript,c#,angularjs,Javascript,C#,Angularjs,我有以下控制器: public class UserController : BaseApiController { // GET api/<controller> public string Get() { var currentuser = CurrentUser.Name; return currentuser; } } function ge
public class UserController : BaseApiController
{
// GET api/<controller>
public string Get()
{
var currentuser = CurrentUser.Name;
return currentuser;
}
}
function getSucceeded(data) {
console.log('data:', data);
promise.resolve(data);
}
function getFailed(parameters) {
console.log("failed", parameters);
promise.reject(parameters);
}
在控制台日志上console.log('data:',data)代码>我得到该值,为了应用绑定,我必须将该值传递给controller.js中的作用域。为了做到这一点,我用这种方式做了一个控制器
LogName.$inject = ['$scope', 'datacontext']
function LogName($scope, datacontext) {
$scope.name =[];
datacontext.getName().then(function (currentuser) {
$scope.name = currentuser;
});
}
function getSucceeded(data) {
console.log('data:', data);
promise.resolve(data);
}
function getFailed(parameters) {
console.log("failed", parameters);
promise.reject(parameters);
}
在视图中,我有以下数据绑定代码:
<h1 ng-controller="LogName" class="title">{{name}}</h1>
function getSucceeded(data) {
console.log('data:', data);
promise.resolve(data);
}
function getFailed(parameters) {
console.log("failed", parameters);
promise.reject(parameters);
}
视图上未显示任何内容,编译器未到达datacontext。getName您的MVC控制器返回字符串公共字符串Get()
,并且您声明$scope.name=[]代码>作为数组将其更改为$scope.name=''代码>这应该会有帮助
function getSucceeded(data) {
console.log('data:', data);
promise.resolve(data);
}
function getFailed(parameters) {
console.log("failed", parameters);
promise.reject(parameters);
}
并将函数getName更改为:
function getName() {
var deferred = $q.defer();
$http.get(baseUrl + 'api/user').success(getSucceeded).error(getFailed);
return deffered.promise;
function getSucceeded(data) {
console.log('data:', data);
//add this
deferred.resolve(data);
}
function getFailed(parameters) {
console.log("failed", parameters);
deferred.reject(parameters);;
}
return deffered.promise;
}
function getSucceeded(data) {
console.log('data:', data);
promise.resolve(data);
}
function getFailed(parameters) {
console.log("failed", parameters);
promise.reject(parameters);
}
您永远不会兑现提供名称的承诺。向GetSuccessed函数添加解析,向error函数添加拒绝
function getSucceeded(data) {
console.log('data:', data);
promise.resolve(data);
}
function getFailed(parameters) {
console.log("failed", parameters);
promise.reject(parameters);
}
这将为等待承诺结果的函数提供数据。有两个问题:
function getSucceeded(data) {
console.log('data:', data);
promise.resolve(data);
}
function getFailed(parameters) {
console.log("failed", parameters);
promise.reject(parameters);
}
首先,你没有解决承诺。您需要使用从服务器返回的数据来解决您的承诺
function getSucceeded(data) {
console.log('data:', data);
promise.resolve(data);
}
function getFailed(parameters) {
console.log("failed", parameters);
promise.reject(parameters);
}
其次,结果实际上位于从服务器返回的数据的results
属性中。在这里,当您仅检索名称时,应使用以下代码:
function getSucceeded(data) {
console.log('data:', data);
promise.resolve(data);
}
function getFailed(parameters) {
console.log("failed", parameters);
promise.reject(parameters);
}
function getSucceeded(data) {
console.log('data:', data);
deferred.resolve(data.results[0]);
}
cachedPromises.currentuser=promise
这将承诺设置为currentuser
,稍后您将尝试绑定到它。您在哪里从函数getsucceed(data){console.log('data:',data);}中检索currentuser的实际值?在这里,我获取值,然后在控制器中检索它,即使我更改了datacontext.getName()。然后(函数(currentuser){$scope.name=currentuser;to datacontext.getName()。然后(函数(数据){$scope.name=data;我得到了相同的结果视图中没有显示任何内容。我猜当我在控制器下执行console.log($scope.name);时是一个空字符串:datacontext.getName()。然后(函数(数据){$scope.name=data;console.log($scope.name);屏幕上没有显示任何内容它的正确方法只是该数据。结果[0],0未定义。因此只有数据是正确的。谢谢。我不明白“0未定义”是什么意思。请详细说明。由于我只返回一个字符串,因此我添加了$scope.name='';和数据。结果[0]不是数组,但data=result->a stringNot appeal。请尝试调试脚本,您将了解我试图解释的内容。