2013-07-23 54 views
0

我今天有一個有趣的問題,與我以爲我會發布AngularJS:更新表的AngularJS模型插入新電池,並刪除另一個

在我的應用我有我使用NG-創建一個HTML表格模型重複,另外我有一個輸入字段綁定到另一個模型,我已經註冊了該模型的手錶功能。當我在輸入字段中輸入一些文本時,該函數將該文本寫入表格的當前選定單元格中。

一旦該功能完成某些有線連接發生。不是更新所選單元格的值,而是在當前位置插入一個新單元格,並將單元格向右移動,並將最後一個單元格從行中移除。很明顯,我會預料到細胞會保留他們當前的位置,並且只更新子元素。

這是我的代碼的一個簡短例子。該模型:

//The model is initialized with empty strings, later the input is supplied by the user 
$scope.master.rows = [["", "", ""], ["", "", ""], ["", "", ""]]; 

的HTML片段:

<table ng-model="master.rows"> 
    <tr ng-repeat="row in master.rows"> 
     <td ng-repeat="col in row" 
      ng-click="master.click($event.target)">{{ col }}</td> 
    </tr> 
</table> 

當執行點擊功能,目前小區在範圍設置使得手錶的功能可以從中檢索x和y指數並用它來更新模型:

$scope.$watch("master.attributes", function (value) { 
    var x = $scope.master.current[0].cellIndex; 
    var y = $scope.master.current[0].parentNode.rowIndex; 
    $scope.master.rows[y][x] = value; 
}); 

回答

0

原來,這種行爲是因爲我直接寫入模型對象。所以我稍微改變了模型以包含對象,而我將該值寫入對象成員。新的模式是這樣的:

$scope.master.rows = [[{value: ""}, {value: ""}, {value: ""}], 
         [{value: ""}, {value: ""}, {value: ""}], 
         [{value: ""}, {value: ""}, {value: ""}] 
        ]; 

在HTML片段我改變了表達:

<td ng-repeat="col in row" ng-click="master.click($event.target)">{{ col.value }}</td> 

在手錶功能:

$scope.master.rows[y][x].value = value; 
相關問題