angular 中的 ng-model 禁用文本框中的值

ng-model in angular disable value in textbox

我正在尝试使用 angularjs 在 mvc-asp 中开发一个页面。我有一个这样的文本框:

<div class="input-group">
    <label for="Name">نام خودرو</label>
    <input class="form-control" id="Name" ng-model="Name" required name="Name" type="text" value="@Edit.Name">
</div>
<span style="color:red" ng-show="frm.Name.$invalid">
    <span ng-show="frm.Name.$error.required">نام خودرو را وارد کنید</span>
</span>

如您所见,我使用 angularjs 验证了文本框。一切正常,但问题是 value="@Edit.Name" 我将此选项用于编辑控制器中,将我的值推送到名为 Edit 的视图包,然后使用 value="@Edit.Name" 将值传递给文本框。

正如您在代码中看到的,当我点击编辑按钮时,值应该被传递到文本框,但是文本框是空的,当我删除 ng-model="Name" 时,它工作正常并且文本框填充值 ..

为什么?

这是因为当您指定 ng-model 指令时,angular 将输入的值更新为控制器中 Name 的值,我只能假设这是一个空值。

生成页面时直接在输入上设置值不会更新基础模型值。真正发生的是,您正在生成包含输入值的页面,并且 angular 立即根据 ng-model 的值 (null) 更新输入值(Name)。

您需要按照 angular 的方式做事,并将控制器范围内的 Name 的值设置为您想要填充的值。

不幸的是,它太复杂了,无法在此处为您提供有关如何使用 AngularJS 构建 .NET MVC 应用程序的信息。但是,我建议您阅读 https://angularjs.org/ site and YouTube (this one seems helpful https://www.youtube.com/watch?v=zKkUN-mJtPQ&list=PL6n9fhu94yhWKHkcL7RJmmXyxkuFB3KSl) 上的一些初学者 angular 教程,以了解 angular 如何独立于 .NET 工作。

一旦您理解了 angular 本身的工作原理,您就可以将其整合到 .NET MVC 应用程序中。我建议您在学习时不要使用 .NET MVC angular,因为这两个应用程序的结构根本不同,作为初学者,您会 运行 遇到很多问题。

这里有一个提示,虽然当你一起使用它们时:使用 angular resources(处理 ajax)和 services/factories/providers 来调用你的控制器方法并检索数据angular 绑定到。 MVC 视图本身根本不会处理数据绑定。