0

渡された属性を監視するディレクティブがありますが、その属性には生の文字列値または式を渡すことができます。式が渡された場合は、それを監視する必要があります。しかし、生の文字列が渡された場合、属性を監視する必要はありません。式が文字列に対して渡されるかどうかに基づいて、オプションで属性を監視する標準的な方法があるかどうか疑問に思っていますか? attrs で「{{*}}」を確認できますが、それが完了しているかどうかはわかりません。

ディレクティブは単にこれを行います:

//my-drct.js
 scope.watch( function(){attrs.specialProperty;} , function(value){ 
   controller.update(value); 
 })

my-drct は次のように使用できます。

<div my-drct = '{{foo}}'> //need to watch
//or
<div my-drct = 'foo' >  //dont need to watch
4

1 に答える 1

2

$parseそのためにサービスを利用することができます。
解析された式にはconstantプロパティ (ブール値) があり、式が定数部分で構成されているか (つまり、永久に同じままである)、または動的部分も含まれているかどうかを示します。

例えば:

.directive('myDrct', function ($parse) {
    return {
        ...
        link: function myDrctPostLink(scope, elem, attrs) {
            var isConstant = $parse(attrs.myDrct).constant;

            if (isConstant) {
                ...
            } else {
                ...
            }
        }
    };
});

この短いデモも参照してください。

于 2014-06-29T05:53:59.783 に答える