我遇到了一個問題,即綁定Angular ng檢查到ng模型,即ng模型不能識別我的複選框的選中狀態。如何將ng模型綁定到ng檢查框
這裏是一個描述(它是一個更大的代碼庫,但我已經量身定製以最小化代碼)。
在頁面加載在JavaScript我初始化我的產品和設置的默認值:
$scope.products = {}
$scope.SetProductsData = function() {
var allProducts;
allProducts = [
{
id: 1,
name: "Book",
selected: true
}, {
id: 2,
name: "Toy",
selected: true
}, {
id: 3,
name: "Phone",
selected: true
}]
我有我的觀點主控該列表對應的複選框每3個產品(圖書,玩具和電話) :這些是默認選中
<div style="float:left" ng-init="allProducts.products = {}" >
<div ng-repeat="p in Data.products">
<div style="font-size: smaller">
<label><input id="divPlatorm" ng-model="products[p.name]" ng-init="products[p.name] = true" type="checkbox"/>
{{p.name}}</label>
</div>
</div>
</div>
然後在行已重複了相同的產品表:
<div ng-repeat="line in lineProducts" ng-init="line.products = {}">
<div id="sc-p-enc" ng-repeat="p in Data.products">
<div id="sc-p-plat" style="font-size: smaller">
<label id="pl-label"><input ng-checked="products[p.name]" ng-model="line.products[p.name]" ng-init="line.products[p.name] = true" type="checkbox"/>
{{p.name}}</label>
</div>
</div>
</div>
當我檢查/取消選中主產品時,相應的複選框在行中發生變化。所以,如果我有100行(書,玩具和電話)未經檢查的玩具,我可以看到所有玩具在行中未被檢查。
當我將數據發送到我的控制器時,即使他們沒有被選中,我仍然可以看到所有玩具=真。
如果我身體上的行,然後取消選中每個玩具,並將數據發送到我的控制器Toys = False。
如何從主複選框控制時如何獲取複選框選中狀態更改?
我也跟着在這裏找到了職位,但我不認爲這也適用於我的方案: AngularJS: ng-model not binding to ng-checked for checkboxes
有部分代碼缺失。小提琴/笨蛋會有所幫助。除此之外:你正在'ng-repeat'內重用ID;它會導致文檔中具有相同標識的許多元素。你正在廣泛使用'ng-init'。我認爲'ng-init'在視圖中插入了程序邏輯,這通常不是最佳實踐。 –