Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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
Javascript 在AngularJS中添加来自指令的指令,但保持ng模型绑定_Javascript_Angularjs_Model View Controller_Angular Directive - Fatal编程技术网

Javascript 在AngularJS中添加来自指令的指令,但保持ng模型绑定

Javascript 在AngularJS中添加来自指令的指令,但保持ng模型绑定,javascript,angularjs,model-view-controller,angular-directive,Javascript,Angularjs,Model View Controller,Angular Directive,此问题与以下问题关联: 在建议的答案中,有一个问题是ng模型并没有更新,因为元素是在指令中编译的。 我所期望的是,在我更改select选项后,ng模型将绑定到所选的项,但它不是。 有没有办法解决这个问题 普朗克: 具体而言: <select ng-options="s for s in selects" ng-model="el" common-things> <option value=""></option> </select> {{

此问题与以下问题关联:

在建议的答案中,有一个问题是ng模型并没有更新,因为元素是在指令中编译的。 我所期望的是,在我更改select选项后,ng模型将绑定到所选的项,但它不是。 有没有办法解决这个问题

普朗克:

具体而言:

  <select ng-options="s for s in selects" ng-model="el" common-things>
  <option value=""></option>
</select>
{{el}}

{{el}}
在这里,无论我从select中选择什么选项,ng模型(el)始终具有相同的值

同样的问题是,如果我在指令内部有隔离作用域,例如:

         <input type=text common-things ng-model="el.val"                otherdata="something"/>


当我在输入中编写一些东西时,我期望{el.val}}会有那个值,但它不会被更新。

您的附加指令为
元素创建了一个新的作用域。由于,属性
el
最终位于指令的作用域,而不是父控制器的作用域。这是一个常见的陷阱,也是在角度绑定中始终使用点的主要原因

快速修复方法是将主控制器上的
el
定义为对象,并设置对象的属性

$scope.el = {};
$scope.el.val=2;

<select ng-options="s for s in selects" ng-model="el.val" common-things>
$scope.el={};
$scope.el.val=2;

如果指令中有隔离作用域,该怎么办。对于instace:HTML:和我想要的,基于otherdata值添加多个指令。因此,我在common things指令中隔离了作用域,在这种情况下,在我在输入标记中写入内容时,ng模型(el.val)不会更新。如果在输入上隔离作用域,则即使您的
选择也不会绑定到元素。如果有必要隔离元素上的范围,则管理该元素的指令必须对该元素上使用的数据负全部责任;实现这一点的一种方法是将
ng model
绑定到指令中的
scope
。我可以在没有隔离作用域的情况下创建它吗?我试图做的是:根据传递给指令的数据的属性(输入上的属性“otherdata”),我想向该字段添加其他指令。例如,如果somedata.required=true,我想添加我所需的指令。另外,我希望在输入后添加html标记,并具有以下行为:如果某个函数(来自父作用域)的计算结果为true,我希望显示该标记。正因为如此,我有一个独立的作用域,我不知道如何将带参数的函数传递给指令,并在用户更改输入值时调用该函数。看起来您试图过度设计此解决方案。
my required
做了什么正常的
required
无法完成的事情?此外,如果您希望在输入之后有一个span,那么您可能应该在HTML中单独使用span,并使用
ng if
ng show
。如果这些都不起作用,那么您的下一个最佳选择就是生成一个“包装”指令,并使用转义来包含
输入
,而不让输入成为指令的实际目标。