我有以下 Controller :
public class UserController : BaseApiController
{
// GET api/<controller>
public string Get()
{
var currentuser = CurrentUser.Name;
return currentuser;
}
}
currentuser的值我是这样传给datacontext的:
function getName() {
var deferred = $q.defer();
var promise = deferred.promise;
cachedPromises.currentuser = promise;
$http.get(baseUrl + 'api/user').success(getSucceeded).error(getFailed);
return cachedPromises.currentuser;
function getSucceeded(data) {
console.log('data:', data);
}
function getFailed(parameters) {
console.log("failed", parameters);
}
}
在控制台日志上 console.log('data:', data);
我得到了值,为了应用绑定(bind),我必须将这个值传递给 controller.js 中的范围.为了做到这一点,我用这种方式做了一个 Controller 。
LogName.$inject = ['$scope', 'datacontext']
function LogName($scope, datacontext) {
$scope.name =[];
datacontext.getName().then(function (currentuser) {
$scope.name = currentuser;
});
}
在 View 中,我有以下数据绑定(bind)代码:
<h1 ng-controller="LogName" class="title">{{name}}</h1>
绑定(bind)显示为空数组,我不明白哪里出了问题。
编辑: 当我在 Controller 上执行控制台日志时:
datacontext.getName().then(function (currentuser) {
$scope.name = currentuser;
console.log('current', currentuser);
});
View 上什么都没有出现,编译器没有到达datacontext.getName
最佳答案
您的 MVC Controller 返回字符串 public string Get()
并且您将 $scope.name =[];
声明为数组,将其更改为 $scope.name ='';
应该有帮助
并将函数 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;
}
关于javascript - 如何使用 C# 和 Angular js 在 View 上显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28965017/