angularJS自定义指令无法显示范围字符串变量

时间:2015-07-27 15:12:08

标签: angularjs

在我的自定义指令validation_message_tag.js中,当$scope更新时,我有几个字符串分配给data

$scope.$watch('ctrl.data', function(newValue, oldValue) {
    //todo: validation not working
    $scope.success = newValue ? newValue.success : ''
    $scope.info = newValue ? newValue.info : ''
    $scope.warning = newValue ? newValue.warning : ''
    $scope.error = newValue ? newValue.error : ''
}, true)

这是我的HTML页面

<div class="validation-message-tag" ng-show="ctrl.$touched && ctrl.message">
  <p ng-show="success" class="validation-success">{{success}}</p>
  <p ng-show="warning" class="validation-warning">{{warning}}</p>
  <p ng-show="info" class="validation-info">{{info}}</p>
  <p ng-show="error" class="validation-error">{{error}}</p>
</div>

当我在$ watch中设置断点时,变量确实被正确分配。但屏幕上没有显示任何消息。

2 个答案:

答案 0 :(得分:1)

您可以使用ng-repeat。将数据包装在列表中。如果列表为空,则不会显示任何内容(例如ng-show="false"

Javascript:

    $scope.success = newValue ? [newValue.success] : []

模板:

  <p ng-repeat="message in success track by $index" class="validation-success">{{message}}</p>

答案 1 :(得分:0)

我不建议再使用ng-show进行验证。 有角度的团队建议使用ngMessages进行验证。

这里有一个可能对你有用的插件。 http://run.plnkr.co/Mw8BG27oyjfMY2rT/