小编Bud*_*ast的帖子

angular2 ngModel/ngValue选择选项对象 - 跨不同实例的相等性

在发布之前,已经在Angular2的各种版本中多次询问过这个问题的味道.但是,我还没有找到任何可以产生所需行为的东西(我想避免的缺少解决方法):选择对象问题

我的表单选择通过[(ngModel)]与对象进行双向绑定,然后通过*ngFor生成"选项"以获取类似对象的列表(全部由id区分).在我的研究中,已多次提到Angular2使用JavaScript对象等效(通过实例),因此绑定模型中没有相同实例的对象将与列表不匹配.因此,它不会被呈现为"选定"项 - 打破"双向"数据绑定.

但是,我想为这些实例定义一种匹配方式.已经尝试了一些似乎在互联网上浮动的解决方案,但我要么丢失了一小块,要么实施不当.

我想避免的选项:

  • 绑定到ngModel中除对象(即id)之外的其他内容.ngValue是我想要使用的一个很好的帮助
  • 通过更改处理程序进行解决方法
  • 强制实例匹配(我从数据服务获取对象,并且不想重新定义它们以匹配......这似乎是不必要的资源浪费)

理想情况下(这似乎已经在几个有解决方案的地方进行了讨论 - 在我的情况下解决方案不足),有可能为ngModel定义一个相等的标准来代替对象实例相等.

即下面的最新尝试,其中h.id == a.id定义属性"selected".我不明白为什么这个"选定"属性不会被渲染 - 是否被ngModel以某种方式阻止了?在HTML中手动设置selected ='true'似乎已修复,但使用[attr.selected]或任何构建ng-reflect-selected ='true'属性的其他变体生成似乎并不成功.

<div *ngFor='let a of activePerson.hobbyList ; let i=index; trackBy:a?.id'>

    <label for='personHobbies'>Hobby:</label>
    <select id='personHobbies' class='form-control'
        name='personHobbies' [(ngModel)]='activePerson.hobbyList[i]' #name='ngModel'>

        <option *ngFor='let h of hobbyListSelect; trackBy:h?.id' 
            [ngValue]='h' 
            [attr.selected]='h.id == a.id ? true : null'
        >
        {{h.name}}
        </option>
    </select>
</div>
Run Code Online (Sandbox Code Playgroud)

我试过的一些事情:

  • trackBy
  • 绑定到[selected] =,selected = {{}}和[attr.selected](这似乎很接近)

我已成功实现呈现的HTML,如下所示:

<select ...>
    <option selected='true'>Selected</option>
    <option selected='false'>Not Selected</option>
    <!-- and variants, excluding with selected=null-->
</select>
Run Code Online (Sandbox Code Playgroud)

但是当对象实例不同时,仍然没有选定的值.我还试图找出HTML或CSS中的哪个元素在用户选择值时记录所选值(ngModel如何处理,以及可能有哪些其他选项用于处理).

任何帮助将不胜感激.目标是获取"更改"按钮以更改基础模型并相应地更新选择框 - …

javascript equality angular2-forms angular

21
推荐指数
2
解决办法
1万
查看次数

当在chrome中动态禁用输入类型范围时,所有输入元素都停止工作并且似乎无法访问

当我尝试动态禁用页面中的输入范围时,页面中的所有其他输入元素都停止在chrome中工作.

这里当我禁用#mySlider, #chkBox并且#myButton变得无法访问并且不触发相应的功能时,甚至无法检查复选框.

我的铬版本:31.0.1650.63米

FIDDLE DEMO >>

HTML

 <input type="range" min="0" max="5" value="0" id="mySlider" onChange="checkMove(this)" />

 <input type="checkbox" value="one" id="chkBox" ><br/>
 <input type="button" id="myButton" value="Click Me" onClick="clickCheck();" />
Run Code Online (Sandbox Code Playgroud)

脚本

function checkMove(elem) {

    var minVal = elem.value;

    if (minVal == 2) {
        elem.disabled = true;
    }
}

function clickCheck() {
    alert("hi")
}
Run Code Online (Sandbox Code Playgroud)

html javascript google-chrome input range

14
推荐指数
1
解决办法
509
查看次数

为什么Perl DBI在执行之前需要一个prepare语句?

我目前正在研究一些Perl脚本,我对它很新.我遇到了Perl的一个问题,因为我已经习惯了Php的MySQL语法,你可以在其中创建所需的语句,然后执行它,然后将信息发送到服务器端.

但是,使用Perl和DBI模块,它需要您创建语句,准备语句,然后执行将信息发送到服务器端的语句.

是因为Perl类似于高级编程语言,并且内部有一个实用的编译器,它在执行之前需要这个prepare语句吗?

我正在使用MySQL更新语句,它是否特定于语句(更新vs选择)?

当我说'创建声明'时,我的意思是:

$query = "UPDATE table SET column = value";
Run Code Online (Sandbox Code Playgroud)

也许我没有对这个话题做过足够的研究?

php mysql perl

10
推荐指数
2
解决办法
4397
查看次数

为什么Java要求char变量使用单引号?

为什么Java要求char变量用单引号而不是double来包含其中的任何内容?一个例子:

char s = 's'; //This will not break
Run Code Online (Sandbox Code Playgroud)

VS:

char s = "s"; //This will break
Run Code Online (Sandbox Code Playgroud)

我理解双引号主要用于字符串,但是有一个特定的原因可以解释为什么字符只能使用单引号并在输入双引号时中断?

我试图做一些研究,但唯一相关的是另一个SO 问题,它指的是单引号和双引号之间的区别,而不是char的语法发展背后的推理.

java syntax

3
推荐指数
1
解决办法
1393
查看次数

html下拉问题

好的,所以这里.我正致力于扩展我的html,css和javascript知识.为此,我开始编写一些基本的网站设计(在实时服务器上,但所有组成和假的).在我最近的一个,我决定去下拉菜单.为了使这一切正确,我决定使用表元素,并使用一些非常基本的(我现在都知道)javascript.我目前正在使用.dropdown和.dropdown:悬停以使我的菜单正常工作.但是,由于我使用了table元素,每次我在测试页面上"下拉"我的菜单时,其他菜单标题会调整为下拉窗口的大小.任何想法如何打击这个?继承我的代码....

CSS

    .dropdown ul {
        display: none
    }
    .dropdown:hover ul {
        display: block;
        background-color: white;
    }
    body {
        margin: 0;
        padding: 0;
        background: -moz-linear-gradient(AliceBlue, White);
        background: -webkit-linear-gradient(AliceBlue, White);
        background: linear-gradient(AliceBlue, White);
    }
    table {
        align: center;
        font-family: cursive;
        font-decoration: underline;
    }
    td {
        border: solid 1px Lavender;
        padding: 4px;
        margin-left: 6px;
        margin-right: 6px;
        cell-spacing: 6px;
    }
    h1 {
        font-size: 14px;
    }
Run Code Online (Sandbox Code Playgroud)

HTML

<div style="text-align: center">
    <img src="http://satasurfer.byethost33.com/2/logo.jpg" height="150px" width="70%" align="center">
</div>
<table>
    <td class="dropdown">
        <h1>
        Search By Department
        <ul>
        <li><a …
Run Code Online (Sandbox Code Playgroud)

html javascript css menu

0
推荐指数
1
解决办法
101
查看次数

标签 统计

javascript ×3

html ×2

angular ×1

angular2-forms ×1

css ×1

equality ×1

google-chrome ×1

input ×1

java ×1

menu ×1

mysql ×1

perl ×1

php ×1

range ×1

syntax ×1