2014-01-24 33 views

回答

0

我不知道這是否是正確的方法。你所有的模型都在你的$ scope中,爲什麼不直接從那裏獲取?

對於變化,你不應該使用jQuery像element.on(「變化」,...)的風格,而不是一個事件監聽器綁定到與$範圍模型。$腕錶(「模型」,...)那將是角度的方式。

0

你是否試圖禁用所有的輸入,並清除他們的值時勾選'禁用'複選框?

我建議加入ng-disabled指令對您的輸入並將其綁定到你的模型的屬性。

您可以輕鬆地將它們移動到物體上的模型,然後清除該屬性,當控件被禁用清除輸入的值。

更新您的plunkr的版本:http://plnkr.co/edit/xKRF3rfAB8EcSKEBEeKd?p=preview

這是基於你的榜樣更新的代碼:

app.js:

app.controller('MainCtrl', function($scope) { 
    // 1. Bind the 'Disable' checkbox's ng-model to this value. 
    $scope.disabled = false; 

    // 2. Move all your model data down one level onto the 'viewData' object. 
    // Now we can change all the input values just by changing the `$scope.viewData` object. 
    $scope.viewData = { 
     user: { 
      lastname: 'Doe', 
      firstname: 'John' 
     }, 
     checker: true, 
     opt: 'Item 2' 
    }; 

    // 3. Add a change callback on the 'Disable' checkbox to call this function. 
    // Replace the $scope.viewData to change the input values. 
    var originalData = null; 
    $scope.disabledChanged = function() { 
     if ($scope.disabled) { 
      // Clear the previous object. 
      originalData = $scope.viewData; 
      $scope.viewData = null; 
     } else { 
      // Revert back to the previous object. 
      $scope.viewData = originalData; 
     } 
    } 
}) 

的index.html:

<fieldset id="f"> 
    <legend> 
    <label><input type="checkbox" child-disable child-disable-root="f" ng-model="disabled" ng-change="disabledChanged()" /> Disable</label> 
    </legend> 
    <hr /> 
    <p><input type="checkbox" ng-model="viewData.checker" ng-disabled="disabled" /> Test</p> 
    <p><input type="text" ng-model="viewData.user.firstname" ng-disabled="disabled" /> 
    <input type="text" ng-model="viewData.user.lastname" ng-disabled="disabled" /></p> 
    <p><textarea ng-model="viewData.multi" ng-disabled="disabled"></textarea></p> 
    <div> 
     <select ng-model="viewData.opt" ng-disabled="disabled"> 
      <option>Item 1</option> 
      <option>Item 2</option> 
      <option>Item 3</option> 
     </select> 
    </div> 
    <div> 
     <button>Click</button> 
    </div> 
</fieldset> 
+0

我的計劃是有一個指令,因爲有多個部分可以被禁用。發佈的示例可以多次下一個。此外,有許多不同型號的視圖可以禁用。因此,我認爲一個指令是一個更通用和可重用的方法,我不重複自己。 你認爲我應該在所有視圖和部分上使用ng-disabled和ng-change嗎?也沒有計劃來恢復模型。 – Dominic

相關問題