1

入力属性 ID が存在するかどうかに応じて、アクティブまたは無効なファイル リンクをレンダリングするディレクティブがあります。

ディレクティブは filelink と呼ばれます。

<filelink id="{{resource.id}}" type="{{resource.mimetype}}" name="{{resource.name}}" size="{{resource.size}}" icon="hide"></filelink>

これはディレクティブ コードです。

.directive('filelink', function() {
    return {
        restrict: 'E',
        replace:true,
        scope: true,
        template:"<span></span>",
        link: function($scope, $element, $attrs){
            $attrs.$observe('id', function (value) {
                if(value == ""){
                    $element.append("<span class='heading' href=''>  "+$attrs.name+" <i class='icon-lock'></i></span>")
                }else{
                    $element.append("<a class='heading' href='t3a/index.php?id=5&tx_crcdata_crc_data_mgm[controller]=Dataset&tx_crcdata_crc_data_mgm[action]=readFile&tx_crcdata_crc_data_mgm[id]="+$attrs.id+"&tx_crcdata_crc_data_mgm[type]="+$attrs.type+"&tx_crcdata_crc_data_mgm[name]="+$attrs.name+"&tx_crcdata_crc_data_mgm[size]="+$attrs.size+"' style='padding-left: 10px;' title='"+$attrs.name+"'>  "+$attrs.name+" </a> ")
                 }
             });
          }
        };
      });

id 値は、コントローラーの外部のリゾルバーを介して非同期に受信されています。

DatasetDetailCtrl.resolve = {
  dataset: function($route, Package) {
    Package.getSinglePackage($route.current.params.datasetId);
  },
  delay: function($q, $timeout) {
    var delay = $q.defer();
    $timeout(delay.resolve, 1000);
    return delay.promise;
  }
};

このディレクティブは Firefox 16 では問題なく機能しますが、Chrome と IE では、すべての $attrs が「未定義」であるため、ディレクティブは機能しません。データと呼ばれる非同期の監視が機能していないようです

これが事実である理由はありますか?

4

0 に答える 0