当前位置: 首页 > 知识库问答 >
问题:

角js init ng-模型从默认值

孙永嘉
2023-03-14

假设您有一个表单,其中包含从数据库加载的值。如何初始化ng模型?

例子:

<input name="card[description]" ng-model="card.description" value="Visa-4242">

在我的控制器中,$scope。卡最初未定义。除了做这样的事还有别的办法吗?

$scope.card = {
  description: $('myinput').val()
}

共有3个答案

苏星宇
2023-03-14

这显然是AngularJS缺少的,但很容易添加。只需编写一个快速指令,从输入字段设置模型值。

<input name="card[description]" value="Visa-4242" ng-model="card.description" ng-initial>

这是我的版本:

var app = angular.module('forms', []);

app.directive('ngInitial', function() {
  return {
    restrict: 'A',
    controller: [
      '$scope', '$element', '$attrs', '$parse', function($scope, $element, $attrs, $parse) {
        var getter, setter, val;
        val = $attrs.ngInitial || $attrs.value;
        getter = $parse($attrs.ngModel);
        setter = getter.assign;
        setter($scope, val);
      }
    ]
  };
});
陆洲
2023-03-14

这是新的Angular应用程序中常见的错误。如果可以避免,则不希望将值写入服务器上的超文本标记语言。事实上,如果你能摆脱让你的服务器完全呈现超文本标记语言,那就更好了。

理想情况下,您希望发送您的Angular HTML模板,然后通过JSON中的$http下拉您的值并将它们放入您的范围中。

因此,如果可能,请执行以下操作:

app.controller('MyController', function($scope, $http) {
    $http.get('/getCardInfo.php', function(data) {
       $scope.card = data;
    });
});

<input type="text" ng-model="card.description" />

如果您必须从服务器将您的值呈现到超文本标记语言中,您可以将它们放在全局变量中,并使用$windows访问它们:

在页面的页眉中,您会写下:

<head>
   <script>
       window.card = { description: 'foo' };
   </script>
</head>

然后在控制器中,您会得到如下结果:

app.controller('MyController', function($scope, $window) {
   $scope.card = $window.card;
});

我希望这有帮助。

奚卓
2023-03-14

如果您无法按照@blesh的建议重新编写应用程序(使用$http或$resource下拉JSON数据并填充$scope),您可以使用ng init代替:

<input name="card[description]" ng-model="card.description" ng-init="card.description='Visa-4242'">

请参见AngularJS-当使用ng模型时,输入文本框上的值属性被忽略?

 类似资料:
  • 问题内容: 我有以下模型代码: 但是我希望,它将生成类似 这没有发生,当我运行它时会产生: 深入研究的代码并进行谷歌搜索没有给我任何好处,但是James Bennet的注释不被认为会影响生成,但是Django管理员需要它。即使是这样,我如何获得理想的效果? 我的版本是1.3.0最终版 问题答案: 请注意,该参数也可以采用可调用对象:https : //docs.djangoproject.com/

  • 我在JavaFX中尝试从表视图中选择单行时遇到了一些问题。 以下是我如何使用数据库中的数据填充表: 但是,当我尝试插入setSelectionMode代码时,出现错误。它告诉我找不到符号符号:方法setSelectionMode(int)位置:class TableView 我记得当我在JavaSwing中创建table时,我用它为table设置了一个模型:DefaultTableModel ta

  • 我使用以下命令为德语语言模型提供corenlp服务器,这些模型在类路径中作为jar下载,但它不输出德语标记或解析,只加载英语模型: German.Prop内容:

  • 问题内容: 假设我有一个模型: 目前,我正在使用默认的admin创建/编辑此类型的对象。如何从管理员中删除该字段,以使每个对象都无法使用值创建,而是将接收默认值? 问题答案: 设置为和为默认值。 http://docs.djangoproject.com/en/dev/ref/models/fields/#editable 另外,你的字段是不必要的。Django将自动添加它。

  • 问题内容: 我有一些看起来像这样的代码: 并且我想覆盖模型中字段的默认值,使其适用于该模型。 我已经浏览了一些相关的Django文档,并仔细查看了模型对象,但是我很难找到合适的位置进行此操作。有什么建议? 问题答案: 你实际上可以按照以下步骤进行操作: 我已经做了一两次。之所以有效,是因为Message上的字段与BaseMessage上的字段是不同的实例。但是,我怀疑是否建议使用它;-)它在很大程

  • 本文向大家介绍django 模型字段设置默认值代码,包括了django 模型字段设置默认值代码的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧~ 补充知识:django 设置默认值到SQL 环境:django 1.9.7 背景介绍 django migrate 生成表结构时,默认是不处理default(即字段的default 是在django 框架层面,没有到数据库