【问题标题】:How to access values from angular $scope variable in MVC view?如何在 MVC 视图中访问角度 $scope 变量的值?
【发布时间】:2015-05-09 16:02:34
【问题描述】:

以下函数从控制器函数中检索数据并将其保存到$scope.Details 并重定向到支付视图。

$scope.pay = function () {

          $http.get('api/Details/123').success(function (data) {
              $scope.Details = data;
          });

          $location.url('/payment');
      }

另外,我正在初始化 paymentForm 范围以获取上面检索到的来自 $scope.Details 的值。

$scope.paymentForm =  {
          FirstName: $scope.Details.FirstName,
          LastName: $scope.Details.LastName,
      PaymentAmount: $scope.Details.PaymentAmount
      };

控制器功能:

[HttpGet]
    [Route("api/Details/{id}")]
    public Details Details(int id)
    {
        return new Details()
        {
            FirstName = "Test",
            LastName = "Tester"
        };
    }

付款视图:

<label for="fname">First Name</label>
<input id="firstname" type="text" ng-model="paymentForm.FirstName">
<label for="lname">Last Name</label>
<input id="lastname" type="text" ng-model="paymentForm.LastName">

付款表单不会填充名字和姓氏字段中的值。谁能指出我在这里缺少什么? 谢谢!

【问题讨论】:

  • 我们在这里遗漏了很多东西,比如您在哪个角度控制器中分配了$scope.paymentForm,以及ng-controller 指令在您的 HTML 视图中的位置。
  • 另外,顺便说一句,您的输入元素没有(自我)关闭,角度可能有一些问题。

标签: javascript angularjs model-view-controller


【解决方案1】:

尝试在$scope.pay 函数声明的上方添加$scope.Details = {}。那么这段代码应该可以完成这项工作。

【讨论】:

  • 谢谢。我会尝试这些东西。
  • 当我在表单上的控件中键入内容时,我发现付款视图正在将值保存到范围变量 paymentForm 中。但是当首先显示视图时,我无法从范围内填充视图的默认值。不知何故,来自 $scope.Details 的数据并没有传递到 $scope.paymentForm。我在 Pay() 函数中加载 $scope.Details 后尝试了 $scope.$apply(),但它不起作用。谢谢!
  • 尝试创建一个初始的$scope.paymentForm = { FirstName: '', LastName: '', PaymentAmount: '' },然后在成功时更改$scope.paymentForm.FirstName = data.FirstName,并像其他道具一样。您也不应该以这种方式需要 $scope.Details 对象。
猜你喜欢
  • 2015-12-17
  • 1970-01-01
  • 2013-03-17
  • 2017-01-16
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多