2015-12-11 48 views
1

我試圖在UI Bootstrap模式中使用ng消息進行UI驗證反饋。 (http://angular-ui.github.io/bootstrap/#/modal)。Angular ng消息需要UI內的錯誤Bootstrap模式

每次打開模式,我都會得到這個錯誤。

[$compile:ctreq] Controller 'ngMessages', required by directive 'ngMessage', can't be found! 

所有設置都正確,如此處所述(https://docs.angularjs.org/api/ngMessages)。所有的angularjs文件都被引用,消息模塊依賴被添加到主模塊,並且指令被使用,因爲它應該但我仍然得到這個錯誤。 如果我同時使用ng-message或ng-messages-include,就會發生這種情況。

這裏是我的模態的HTML內容模板:

<form name="formTrocaDeSenha" data-ng-submit="vm.submit(formTrocaDeSenha.$valid)" novalidate> 
    <div class="form-group"> 
     <label class="control-label">Senha atual:</label> 
     <div> 
      <input type="password" name="senhaAntiga" class="form-control" style="width: 256px" data-ng-model="vm.senhaAntiga" required minlength="8" autofocus> 
     </div> 
     <div ng-messages="formTrocaDeSenha.senhaAntiga.$error"></div> 
     <!--data-ng-messages-include="/app/mensagensValidacao.html"></div>--> 
     <div ng-message="required">Campo obrigatório</div> 
     <div ng-message="minlength">Mínimo de 8 caracteres</div> 
    </div> 
    <button class="btn btn-lg btn-info" type="submit">Enviar</button> 
    <button class="btn btn-lg btn-info" type="button" data-ng-click="vm.cancelar()">Cancelar</button> 
    <br /> 
    <div style="width:50%" data-ng-show="vm.message != ''" class="alert alert-danger">{{vm.message}}</div> 
</form> 

我查了messges-include指令,它已經改掉找到父範圍控制器:斯科特 - 阿倫

.directive('ngMessagesInclude',['$templateRequest', '$document', '$compile', function($templateRequest, $document, $compile) { 
    return { 
     restrict: 'AE', 
     require: '^^ngMessages', // we only require this for validation sake 
     link: function($scope, element, attrs) {} 
    } 
}; 

繼承人普拉克我作爲一個指導,工作得很好:/ FipgiTUaaymm5Mk6HIfn(我不能發佈多於2個鏈接)

我想這是與模式的東西。 任何人都有什麼可以導致這個錯誤的想法?

<div ng-messages="formTrocaDeSenha.senhaAntiga.$error"></div> 
<div ng-message="required">Campo obrigatório</div> 
<div ng-message="minlength">Mínimo de 8 caracteres</div> 

你應該巢他們,正確的方法:

回答

2

你與ng-message指令聲明你的標籤之前關閉與ng-messages指令標籤

<div ng-messages="formTrocaDeSenha.senhaAntiga.$error"> 
    <div ng-message="required">Campo obrigatório</div> 
    <div ng-message="minlength">Mínimo de 8 caracteres</div> 
</div> 

知我敢打賭,錯誤信息現在更有意義;)

控制器'ngMessages',指令'ngMessage'所要求的,無法找到!

+0

你說得對,它既適用於在ng消息下定義消息,也適用於ng-messages-include。 但我仍然不知道爲什麼它不能像這個plunker(http://plnkr.co/edit/FipgiTUaaymm5Mk6HIfn)那樣在同一個div中使用ng-messages-include屬性。 如果我這樣做,我仍然得到要求的錯誤。 –

+0

我無法回答,具體而言,爲什麼這個plunker代碼不起作用,但我在這裏看不到Angular ng-message文檔中的這種用法:https://docs.angularjs.org/api/ngMessages顯示與上面的答案類似,使用ng-messages-include包含屬性*的div與具有ng-messages屬性的div相似。 這是可能的,掠奪者顯示舊式的過時但現在失敗的舊式聲明。 – jmmygoggle

+0

在模態框中使用ng-messages時,我遇到了同樣的問題。如果我在外面使用,我可以看到它的工作。任何想法? – vuquanghoang