将初始 Razor 输出与 Angular 更新相结合
combining initial Razor output with Angular updates
我有ASP。NET5/MVC6 应用程序。用户加载页面,Razor 视图负责数据的输出。例如(这是一个虚构的例子,仅用于说明):
<div>@Model.Quantity</div>
用户可以更新数量,这是通过Angular $resource服务的POST完成的。服务器上的 HttpPost 更新数据库,并以 JSON 格式返回新数量。我想在不刷新整个页面的情况下更新页面上的值。很明显如何在JQuery中做到这一点:
$("#quantity").html(data)
但如果可能的话,我想留在Angular。所以,我想象这样的事情:
<div ng-controller="inventoryCtrl as vm">
<script>
vm.Model.Quantity = @Model.Quantity
</script>
<div>{{vm.Model.Quantity}}</div>
</div>
然后控制器中的回调函数将更新Model.Quantity
但这行不通...虚拟机未定义。
一定有更好的办法!
但这行不通...虚拟机未定义。
您需要捕获this
:
var that = this;
这样,在资源上的 AJAX 请求的then
回调中,您可以更新模型:
.then(function(result) {
that.Model.Quantity = result;
});
更新:
我误解了你的问题。您的初始渲染似乎有问题。这可以很容易地实现,就像这样:
<script>
var quantity = @Html.Raw(Json.Encode(Model.Quantity));
// declare the quantity that came from the server as constant value
app.constant('quantity', quantity);
</script>
可以注入到控制器中:
app.controller('MainCtrl', function (quantity) {
this.Model.Quantity = quantity;
});
更新:
您也可以将整个对象图存储到一个常量中:
<script>
var model = @Html.Raw(Json.Encode(Model));
app.constant('model', model);
</script>
相关文章:
- Angular:更新一次性绑定的数据
- 通过jQuery添加ng样式属性,angular不更新
- 谷歌地图/Angular JS:地图更新并不总是反映数据,并且可以't删除标记
- Angular没有根据模型更新我的选择元素
- 在日期更改后更新Angular UI引导程序日期选择器选项
- Angular JS-文本框未在独立范围内更新
- 由控制器调用的服务更改时,Angular未更新视图
- 视图ngValue-Angular JS中未更新模型的更改
- 如何在编译时更新yeoman angular中的html路径
- 使用angular更新json值
- 将多模型表单从 Angular 更新为 Sinatra
- 将初始 Razor 输出与 Angular 更新相结合
- 如何使用 Angular 更新 NG-Repeat 中的列表
- 如何使用angular更新DOM元素
- Angular:更新服务并在控制器之间共享数据
- Angular:更新子函数中的作用域var
- 如何使用Angular更新Kendo-UI网格上的数据并持久化层级选择?
- Angular 2:更新服务变量和视图
- 动态创建的带有填充数组的下拉列表不会使用angular更新
- 使用Angular更新jQuery Chosen选定的值