Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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 从指令中观察表达式_Javascript_Angularjs_Directive - Fatal编程技术网

Javascript 从指令中观察表达式

Javascript 从指令中观察表达式,javascript,angularjs,directive,Javascript,Angularjs,Directive,基本上,如何从指令中侦听表达式中的更改 我使用未记录的ng required有条件地要求某个字段: <input type="checkbox" ng-model="partner" checked /> <input ng-model="partnerName" placeholder="required" ng-required="partner" /> 这个想法类似于angular的ng类,但我没有办法做到这一点。以下是到目前为止我得到的信息: app.dire

基本上,如何从指令中侦听表达式中的更改


我使用未记录的
ng required
有条件地要求某个字段:

<input type="checkbox" ng-model="partner" checked />
<input ng-model="partnerName" placeholder="required" ng-required="partner" />
这个想法类似于angular的
ng类
,但我没有办法做到这一点。以下是到目前为止我得到的信息:

app.directive('ngPlaceholder', function ($parse) {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            console.log( scope.$eval(attrs.ngPlaceholder) );
        }
    }
});
它记录了一个很好的对象,我可以使用它来确定
占位符
值:

{ required: true }
但是,当
合作伙伴
发生更改时,我该如何进入
$digest
/
$apply
循环来更新
占位符
属性?

这就是您想要的吗

链接函数的基本思想如下

   link: function (scope, element, attrs) {
        scope.$watch(attrs.xngPlaceholder, function (newVal, oldVal, scope) {
          element.removeAttr('placeholder');
          var att = '';
           angular.forEach(newVal, function (elm, key)
                att += elm ? (key + ' ') : ''; 
            });
            element.attr('placeholder', att);
        }, true);
    }

不需要指令的替代方法:

placeholder="{{{true: 'required', false:''}[partner]}}"

上面创建对象
{true:'required',false:'}
,然后使用当前值
partner

索引到对象中。建议:不要使用ng-prefix,因为它是角度,除非您知道在将来的版本中,它们将使用相同的语法实现ng占位符谢谢!没错。然而,我只是使用原始的邮政编码。
placeholder="{{{true: 'required', false:''}[partner]}}"