【发布时间】:2017-09-09 12:39:38
【问题描述】:
有一个指令表示一个文本输入,在角度控制器中具有一些附加功能。最大长度被传递给指令,因此输入的输入文本可以基于该解析值限制在指令内。 最大长度将使用控制器变量确定,该变量将根据用户活动不时更改。指令如下
<text-box-directive data-max-length="{{maxLength}}"></<text-box-directive>
这是指令
angular.module('common.directives')
.directive('textBoxDirective', function ($parse) {
return {
scope: {
// some additional scope variables
},
link: function (scope.element, attrs) {
scope.maxLength = $parse(attrs.maxLength)();
}
}
}
由于maxLength变量被用作属性,即使变量发生变化,指令值也不会在指令中更新。我希望在控制器值更改时更新此值,但仍然需要 maxLength 变量作为指令的属性
【问题讨论】:
-
不太清楚你在这里问什么。 Angular 使用动态重新渲染;它已经在
$digest循环中重新渲染所有内容。如果您有一些应该受$digest影响的东西,但不是,您应该显示代码。没有minimal reproducible example,其他人唯一能提供的就是盲目猜测。 -
更新了问题:)
-
你为什么在这里使用
$parse?为什么你只在 HTML 中使用单括号 ({ })?只需传递属性,并在scope..... 中使用正常的双向绑定 -
@Claies,正如他已经提到的,他希望将其用作属性,而不是将其公开为双向绑定参数。
-
@Md.AbdulMunim 但这种解释没有意义。这个属性不能绑定到作用域的想法是从哪里来的?当我说两种方式绑定时,也许我夸大了一些事情,一种方式绑定也可以......