Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angularjs指令链接函数未绑定来自控制器的数据_Angularjs - Fatal编程技术网

angularjs指令链接函数未绑定来自控制器的数据

angularjs指令链接函数未绑定来自控制器的数据,angularjs,Angularjs,我有一个指令,它在link函数的元素参数上使用jquery事件,该指令有一个绑定到从页面主控制器获得的值的输入,该值通过隔离范围中的嵌套指令传递,但当更改输入中的值时,该值不会反映在控制器的原始对象中 对象具有以下结构: 发票1: -产品1 -产品2 发票2: -产品3 -产品4 当我更改发票金额时,主控制器中的值会更新,但当我更改产品金额时,更改不会反映出来 这是我的指令,您应该做的是,当用户单击值时,输入似乎能够编辑模型的值: eFieldTemplate.html <div>

我有一个指令,它在link函数的元素参数上使用jquery事件,该指令有一个绑定到从页面主控制器获得的值的输入,该值通过隔离范围中的嵌套指令传递,但当更改输入中的值时,该值不会反映在控制器的原始对象中

对象具有以下结构: 发票1: -产品1 -产品2 发票2: -产品3 -产品4

当我更改发票金额时,主控制器中的值会更新,但当我更改产品金额时,更改不会反映出来

这是我的指令,您应该做的是,当用户单击值时,输入似乎能够编辑模型的值:

eFieldTemplate.html

<div>
<div ng-if="IsMouseIn">
    <input type="text" ng-model="value" class="form-control input-sm" />
</div>
<div ng-if="IsMouseOut"  ng-click="OnMouseClick()">
    {{value}}
</div>
<div ng-if="MouseClick">
    <input  type="text" ng-model="value" class="form-control input-sm" />
</div>
有什么建议吗

我举一个例子:

已更新

我发现了一个使用ngIf的解决方案,就是使用$parent.value引用父范围中的变量。例如

<Input type="text" ng-model="$parent.value" class="form-control input-sm" />

或者也指另一个物体,例如

<input type="text" ng-model="value">
<div ng-if="IsMouseIn">
    <input type="text" ng-model="value">
</div>


这里是参考链接:

使用ng if会创建/销毁新的html节点,而它似乎无法处理这一问题。更改为ng show,它将起作用。我还添加了一个鼠标体捕捉,以结束编辑

<div>
<div ng-show="IsMouseIn">
    <input type="text" ng-model="value" class="form-control input-sm" />
</div>
<div ng-show="IsMouseOut"  ng-click="OnMouseClick()">
    {{value}}
</div>
<div ng-show="MouseClick">
    <input  type="text" ng-model="value" class="form-control input-sm" />
</div>

{{value}}


如果要使用ng If not ng show still,请定义
$scope.values
$scope.config
并像这样使用。为了避免ng if问题,您应该定义一个对象

    <div>
<div ng-if="config.IsMouseIn">
    <input type="text" ng-model="values.value" class="form-control input-sm" />
</div>
<div ng-if="config.IsMouseOut"  ng-click="OnMouseClick()">
    {{values.value}}
</div>
<div ng-if="config.MouseClick">
    <input  type="text" ng-model="values.value" class="form-control input-sm" />
</div>

{{values.value}}

根本看不到问题中的代码与您描述的问题相匹配非常感谢!工作完美!!有没有办法继续使用ng if?现在,在显示/隐藏指令的每个元素时会出现闪烁,这会使每一行在移动HTML元素时变大一小部分。也许您可以尝试只使用一个输入字段,并使用ng类/样式来改换其外观。我想,即使从性能的角度来看,它也更有意义,因为在摘要周期中添加的查找更少。
    <div>
<div ng-if="config.IsMouseIn">
    <input type="text" ng-model="values.value" class="form-control input-sm" />
</div>
<div ng-if="config.IsMouseOut"  ng-click="OnMouseClick()">
    {{values.value}}
</div>
<div ng-if="config.MouseClick">
    <input  type="text" ng-model="values.value" class="form-control input-sm" />
</div>