2014-02-12 145 views
0

我找不到爲什麼當我的指令在元素上啓用時,雙向綁定失敗。爲什麼我的angularjs指令導致雙向綁定失敗?

考慮這個plunkr

在第一取出tooltip={{input1Error}}只要你在一個有效的電子郵件類型,使input1變量更新。

當添加tooltip={{input1Error}}時,輸入有效的電子郵件時,input1型號從不更新。

我錯過了什麼?

回答

1

控制器的範圍存在記錄在案的問題。您可以通過執行下面的更改來解決此問題。

控制器改成這樣:

app.controller('ctrl1', ['$scope','$log', function($scope, $log) { 
    $scope.model = {}; 
}]); 

而且形式:

<form name="myForm" novalidate> 

    <div class="form-group"> 
    <label>Input 1 *</label> 
    <input 
     class="span2" 
     name="input1id" 
     type="email" 
     ng-model="model.input1" 
     tooltip="{{model.input1error}}" 
     tooltip-placement="bottom" 
     tooltip-trigger="openPopup" 
     tooltip-trigger-on='openPopup' 
     tooltip-trigger-off='closePopup' 
     tooltip-show="myForm.input1id.$invalid" 
     required 
    /> 
    <pre>Input 1 is invalid: {{myForm.input1id.$invalid}}</pre> 
    <pre>Input 1 valid email: {{!myForm.input1id.$error.email}}</pre> 
    <pre>Input 1 error msg: {{model.input1error}}</pre> 
    </div> 
    <span class='error hidden' error-on="!myForm.input1id.$error.email" error-for='input1error'>Please enter a valid email</span> 
    <span class='error hidden' error-on="!myForm.input1id.$error.required"" error-for='input1error'>This field is required</span> 
</form> 
+1

謝謝!我不完全明白爲什麼這是必要的。但它似乎是一個最佳做法:https://github.com/angular/angular.js/wiki/The-Nuances-of-Scope-Prototypal-Inheritance和http://www.youtube.com/watch?v = ZhfUv0spHCY&設有= youtu.be&T =30米 – mikew