首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用ng模型绑定时保留自定义对象类型

使用ng模型绑定时保留自定义对象类型
EN

Stack Overflow用户
提问于 2015-08-07 09:54:47
回答 1查看 700关注 0票数 1

我有一系列自定义的javascript对象,它们扩展了基数组。这些对象由数据工厂接收和处理,供主窗体控制器使用。

当绑定到任何输入类型(复选框、无线电、选择)时,初始绑定在加载时是很好的,数据显示并正常工作。但是,在更新视图中的值时,自定义对象类型将被重写并替换为基数组。

当将数据发送回数据工厂时,我需要知道它是什么类型(有几种),以便确定如何为SharePoint列表格式化它。是否有任何方法来保留我的对象类型,并且仍然允许双向绑定?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 13:16:09

当输入通过ngModel更新模型时,它通常用一个覆盖模型初始值的值更新它,并且可能是另一种类型。

有时,您可以选择带有内置属性的返回值,例如ng-true-value和ng-false-value for复选框,或者ng-选项"label for value in array“。

如果您不能这样做,或者需要一个更可重用的解决方案,您可以使用ngModel格式化程序和解析器。

一些背景- ngModel实际上包含两个值:

  • $modelValue -- ngModel表达式中使用的scope属性持有的实际数据(例如,在ng-model="variable" - $modelValue中)将是来自变量的数据。
  • $viewValue --输入控件中使用的值--例如,用户看到的文本框中的文本。

通常$modelValue和$viewValue是相同的,但是我们可以选择使用$formatters和$parsers管道来更改它们。

$formatters是一个我们可以将函数推送到的管道。当$modelValue更改(即绑定的支柱更改)时,数据将由管道中的函数进行转换,结果将是$viewValue。

$parsers是相反的管道。例如,每当视图值发生变化时--有人将文本输入到输入中,则使用$viewValue管道将$parsers转换为模型值。

底线--您可以将自定义对象($modelValue)转换为输入控件($viewValue)中使用的数据,然后使用这两个管道返回。为此,创建一个简单的指令,并向管道(数组)添加任何您喜欢的转换器(函数)。例如(柱塞 -打开控制台并单击复选框):

定制原型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  function CustomObj(value) {
    this.value = !!value ? 'cats' : 'dogs';
  }

  CustomObj.prototype.getValue = function getValue() {
    return this.value;
  };

主计长:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    .controller('ExampleController', ['$scope', function($scope) {

      $scope.checkboxModel = {
        value1: new CustomObj(true) // the model is an instance of CustomObj
      };
    }])

管道指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    .directive('preserveCustom', function() {
      var ddo = {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, el, attrs, ngModel) {

          function formatter(modelValue) {
            if(modelValue instanceof CustomObj) {
              return modelValue.getValue() === 'cats';
            }

            return value;
          }

          function parser(viewValue) {
            return new CustomObj(viewValue);
          }

          ngModel.$formatters.push(formatter);
          ngModel.$parsers.push(parser);
        }
      }

      return ddo;
    });

而html:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<input type="checkbox" ng-model="checkboxModel.value1" preserve-custom>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31883905

复制
相关文章
jQuery 事件(三) 事件的绑定和解绑、对象的使用、自定义事件
之前学的鼠标事件,表单事件与键盘事件都有个特点,就是直接给元素绑定一个处理函数,所有这类事件都是属于快捷处理。翻开源码其实可以看到,所有的快捷事件在底层的处理都是通过一个”on”方法来实现的。jQuery on()方法是官方推荐的绑定事件的一个方法 基本用法:.on( events ,[ selector ] ,[ data ] ) 最常见的给元素绑定一个点击事件,对比一下快捷方式与on方式的不同
Yiiven
2022/12/15
4.1K0
Oracle使用对象类型3(MEMBER方法的对象类型)
MERMER方法用于访问对象实例的数据,如果在对象类型中需要访问特定对象实例的数据,则必须要定义MEMBER方法。 MEMBER方法只能由对象实例调用,不能由对象类型调用。 下面以建立和使用对象类型person_typ2为例: 包含name,gender,birthdate和address等四个属性,以及一个MEMBER过程change_address和一个MEMBER函数get_info。 CREATE OR REPLACE TYPE person_typ2 AS OBJECT( name VARCHAR
小小明童鞋
2018/06/13
1.7K0
使用 ng-repeat-start 进行自定义显示
AngularJS 中使用 ng-repeat 显示列表数据应该都不陌生了, 用起来很简单, 也很方便, 比如要显示一个产品表格, Controller 的 Javascript 代码如下:
beginor
2020/08/10
7300
使用 ng-repeat-start 进行自定义显示
AngularJS:如何使用自定义指令来取代ng-repeat
引言 本文主要介绍了另一种即具有与ng-repeat 一样处理大量数据的绑定的功能,又具有超高的性能。 对于处理小数量,ng-repeat是非常有用的,但是如果需要处理非常大的数量集,还是采用自定义的方法更好一些。 也别是数据大多都是静态的或已预存储好的,这个时候应避免使用ng-repeat指令。 ng-repeat中的表达式和 $watch Angular中的表达式都会创建$watch 的Scope 函数。用于监听模型变化,当你的模型部分发生变化时它会通知你。在ng-repeat指令中,如果某行数据有15
葡萄城控件
2018/01/10
2.5K0
(八)使用 interface 定义对象类型
# 使用 interface 定义对象类型 说明 我们上几个章节中都是使用 type 来定义对象类型,他和 interface 是等价的但是还是有些许区别 使用 interface 定义 interf
老怪兽
2023/02/22
2930
string类型保留两位小数_js保留4位小数
第一种,先把小数边整数:Math.floor(15.7784514000 * 100) / 100
全栈程序员站长
2022/09/23
8.8K0
使用Thread 的自定义定时器
在日常工作中总会有一些定时任务的操作, 定时邮件, 定时短信, 定时脚本任务等等。
用户2458545
2022/09/07
2700
MySQL——定时备份,保留最新31天的数据
概述: 对于我们的生产数据库,都需要定时做备份,以免数据丢失。比如每日备份,同时也需要将以前的进行清理。此处我展示的是只保留最新的 31 天数据。
凡人飞
2020/09/20
1.2K0
从单向到双向数据绑定0.前言1.单向数据(代表:react)2.观察者模式3.双绑的中间枢纽——Object.defineproperty(代表:vue)4. 脏值检测(代表:angular1)前面说
用户最满意的,无非就是界面的操作能实事反应到数据。而实现这种的可以有双向数据绑定、单向数据流的形式。双向数据绑定是,ui行为改变model层的数据,model层的数据变了也能反映到ui上面。比如点击按钮,数字data+1,如果我们自己在控制台再给data+1,那么v层也能马上看见这个变化。而单向数据流就不同了,我们只有ui行为改变,data就改变并马上反馈到v层,而我们自己在控制台改变data这个值,v层居然不变(model是已经变了并没有反应),只能等到下一次ui行为改变,带上这个data结果一起处理。仅仅在V层的单向数据,真的能满足用户需求?数据很庞大的时候,双绑性能如何?其实,每一种都有每一种的适用场景,还是那句话,脱离实际场景谈性能,就是扯淡
lhyt
2018/10/31
1.6K0
注册自定义类型到Qt元对象系统中
2.在main函数中使用qRegisterMetaType注册自定义类型到元对象系统中。
Qt君
2019/07/15
1.5K0
在.Net中使用Oracle的表类型和对象类型
在一般的数据存取操作过程中,如果要对一个主表和对应的子表进行插入操作,那么我们最常见的写法就是写两个存储过程或者SQL语句,一个负责主表数据插入,一个负责子表数据插入,然后在一个事务中实现主表和子表数据的插入。
深蓝studyzy
2022/06/16
8960
从单向到双向数据绑定
用户最满意的,无非就是界面的操作能实事反应到数据。而实现这种的可以有双向数据绑定、单向数据流的形式。双向数据绑定是,ui行为改变model层的数据,model层的数据变了也能反映到ui上面。比如点击按钮,数字data+1,如果我们自己在控制台再给data+1,那么v层也能马上看见这个变化。而单向数据流就不同了,我们只有ui行为改变,data就改变并马上反馈到v层,而我们自己在控制台改变data这个值,v层居然不变(model是已经变了并没有反应),只能等到下一次ui行为改变,带上这个data结果一起处理。仅仅在V层的单向数据,真的能满足用户需求?数据很庞大的时候,双绑性能如何?其实,每一种都有每一种的适用场景,还是那句话,脱离实际场景谈性能,就是扯淡
lhyt
2022/09/21
3.6K0
vue.js笔记——指令
所谓指令,其实本质就是在模板中出现的特殊标记,根据这些标记让框架知道需要对这里的 DOM 元素进行什么操作。
IMWeb前端团队
2019/12/04
7300
vue.js笔记——指令
vue.js笔记——指令 跟ng的指令系统类似,vue也拥有一套指令系统。 所谓指令,其实本质就是在模板中出现的特殊标记,根据这些标记让框架知道需要对这里的 DOM 元素进行什么操作。 简单示例 <p
IMWeb前端团队
2017/12/29
1.2K0
C++|对象模型|对象模型综述
作为C++的核心单元,对象模型在编译器眼中是如何实现的?本文从几个基本理论模型出发,剖析实际。
朝闻君
2021/11/22
6860
C++|对象模型|对象模型综述
对象类型转换
类似于基本数据类型之间的强制类型转换。 存在继承关系的父类对象和子类对象之间也可以 在一定条件之下相互转换。 这种转换需要遵守以下原则: 1.子类对象可以被视为是其父类的一个对象 2.父类对象不能被当作是某一个子类的对象。 3.如果一个方法的形式参数定义的是父类对象,那么调用这个方法时,可以使用子类对象作为实际参数。 4.如果父类对象与引用指向的实际是一个子类对象,那么这个父类对象的引用可以用强制类型转换转化成子类对象的引用。
XING辋
2019/03/26
1.7K0
Double转BigDecimal类型互转,保留俩位小数。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138876.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/02
9170
(五)给对象添加类型和使用 type 关键字定义可复用的对象类型
#给对象添加类型 let product: { title: string price: number insTock: boolean } = { title: '纯棉 T 恤', price: 99.8, inStock: true } # 使用 type 关键字定义可复用的对象类型 在上一章节中我们定义的类型是直接写死在变量后面的,这样的话有新的对象需要用到要在复制一份 let product: { title: string price
老怪兽
2023/02/22
6780
点击加载更多

相似问题

使用ng模型添加对象

43

使用自定义模型绑定时未将对象引用设置为对象实例

20

在Vue中保留v模型绑定时使用显示值。

12

使用ng-submit +ng-模型添加JSON对象

22

模型绑定时带有自定义对象的默认模型绑定的行为

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文