1

これは自己説明型のコードです。html 部分のコメントを確認してください。

HTML:

<div ng-app='myApp'>
<div ng-controller="MCtrl">
  <!-- this should be "test:", OK -->
  <test></test>
  <br>
  <!-- this should be "test: Hello world!", OK -->
  <test custom-target="helloModel"></test>
  <br>
  <!-- this should be "test: Hello !", FAIL! -->
  <test custom-target="emptyModel"></test>
  <br>
</diV>
</div>

JS:

var myApp = angular.module('myApp',[]);

function MCtrl($scope) {
    $scope.helloModel = 'world';
    $scope.emptyModel = '';
}

myApp.directive('test', function() {
   return {
      restrict: 'E',
      scope: {
         customTarget: '='
      },
       template: '<span>test: <b ng-show="customTarget">Hello, {{customTarget}}!</b></span>'
   };
});

http://jsfiddle.net/kMybm/34/

要するに、属性custom-targetがオプションであり、欠落しているときに検出できるようにする必要があります。

更新:

現在、この解決策が見つかりました:

http://jsfiddle.net/kMybm/35/

多分もっと良いものがあります。

4

1 に答える 1

1

b3 番目の例のタグはまったく表示されません。これは、customTarget が空の文字列の場合に false と評価される ngShow があるためです。

于 2013-07-08T12:24:34.870 に答える