java显示不更新_文本框不更新指令中的显示值

为长篇文章道歉,但我试图提供尽可能多的信息 .

我继承了一个使用Angular的相当复杂的应用程序 . 由于NDR,我无法发布代码示例,到目前为止,无法在更小,更简单的独立plnkr中重现我的问题 . 我敢肯定,如果可以,我可以弄清楚我需要做些什么来解决这个问题 . 我知道你的双手是因为我不能发布代码,也不能在plnkr中重新创建问题,但是我会尽力提供尽可能多的信息,希望能得到一些关于下一步要看的一般建议 .

首先,代码/架构:我有一个form.html . 在form.html中,我们使用ng-repeat来迭代从数据库中提取的字段列表,并显示每个字段 . 表单级别的字段是自定义类型 .

updateField(fieldId,data)在form.directive.js中定义,用于在数据更改时将数据更新回数据库 . 这部分可靠地工作 .

form.html还包含一个用于清除字段内容的按钮 .

该字段使用模板根据类型生成正确的输入 . 我们使用选择,文本,短信和许多其他自定义字段 . 我们也在许多这些领域中使用预测文本 .

这是一个例子:

有一个field.directive.js,它有自己的方法来处理已编写的自定义输入字段 . 那包含:

scope: {

data: '=',

field: '=',

onUpdate: '='

},

问题:最初加载表单时,如果文本字段中有数据,并且用户点击“清除字段”按钮,则数据库会更新,并从文本框中删除字符串 .

当用户首先将文本键入字段时,请保留字段,ng-blur调用updateField,并将数据写入数据库 . 这很好用 . 当用户单击text或textedit字段的Clear Field按钮时,数据库中的值将设置回null,但文本框中显示的字符串不会被清除 . 但是,如果我们重新加载表单,则文本字段显示为空 .

起初我认为这与使用ng-repeat产生的领域内的孤立范围有关 . 但是,form.html顶部的attrs.field的简单输出语句显示每次更新文本框时,父作用域也会更新 . 所以这似乎不是问题 .

我已经决定问题可能是输入的$ modelValue正在更新,但$ viewValue不是(或者至少我们需要因为某种原因调用$ render) . 我一直试图将ngModel注入到form.directive.js中,以便访问这些变量和方法,看看我是否正确,但我有一段时间这样做 .

第一次尝试:我尝试将ngModel注入到form.directive.js的指令参数列表中 . 当我加载表单时,我收到以下错误:

Error: [$injector:unpr] Unknown provider: ngModelProvider

http://errors.angularjs.org/1.4.7/$injector/unpr?p0=ngModelProvider%20%3C-%20ngModel%20%3C-%20fieldsDirective

我对Angular很新,我发现链接上的信息比较混乱 . 有些人帮助理解他们所谈论的内容会很棒!

第二次尝试:将formMirel作为参数注入form.directive.js中链接字段中的函数,以及return {}部分中的require:'ngModel'语句 . 当我加载表单时,我收到以下错误:

Error: [$compile:ctreq] Controller 'ngModel', required by directive ‘fields', can't be found!

http://errors.angularjs.org/1.4.7/$compile/ctreq?p0=ngModel&p1=fields

当我按照这个链接说它正在寻找当前DOM元素或其祖先所需的指令控制器(当使用require:'^ ngModel'时) . 但是,这些在表单中使用的字段中由模板使用 . 这是否有资格以这种方式在当前DOM元素中使用?

第三次尝试:假设模板是我不能包含ngModel的原因,我发现了这个:Updating ng-model within a directive that uses a template . 我更改了数据:'='范围映射到数据:'= ngModel' . 不幸的是,这根本没有改变任何行为 .

我被卡住了 . 任何人都可以为我提供一些其他途径来探索,或者可以阐明为什么我的包括ngModel失败了吗?

提前致谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Unity WebGL的UIManager代码示例,用于显示Java接口传递过来的数据: ```csharp using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; public class UIManager : MonoBehaviour { // UI元素引用 public Text displayText; // Java接口函数声明 [DllImport("__Internal")] private static extern string GetJavaData(); // 获取Java接口数据 private string GetJavaInterfaceData() { #if UNITY_WEBGL && !UNITY_EDITOR return GetJavaData(); #else return ""; #endif } // 更新UI显示文本 private void UpdateDisplayText(string text) { displayText.text = text; } // 在每帧更新获取Java接口数据并更新UI显示文本 private void Update() { string javaData = GetJavaInterfaceData(); if (!string.IsNullOrEmpty(javaData)) { UpdateDisplayText(javaData); } } } ``` 在此示例,我们首先定义了一个UIManager类,并在其声明了一个名为displayText的公共Text类型变量,用于引用UI文本框。我们还声明了一个GetJavaData函数,这是一个使用DllImport属性标记的外部函数,用于从Java接口获取数据。 在GetJavaInterfaceData函数,我们首先使用条件编译指令检查是否在WebGL平台上运行,并调用GetJavaData函数来获取Java接口数据。如果不在WebGL平台上运行,则该函数将返回一个空字符串。 在UpdateDisplayText函数,我们使用displayText变量引用文本框,并将传递给该函数的字符串参数分配给其text属性,以更新UI显示文本。 最后,在Update函数,我们在每帧更新调用GetJavaInterfaceData函数获取Java接口数据,并在检查到新数据时调用UpdateDisplayText函数更新UI显示文本。 需要注意的是,这个示例代码仅供参考,具体实现需要根据具体的Java接口数据格式和UI显示需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值