在我的自定义指令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中设置断点时,变量确实被正确分配。但屏幕上没有显示任何消息。
答案 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/