2016-02-11 116 views
0

如果您嘗試下面的jsfiddle鏈接,請在標記爲「標記名稱」的文本框中鍵入內容並點擊更新按鈕。注意console.log> ParmAndValue.Value被設置爲你輸入的內容,如預期的那樣。但現在輸入其他內容並再次點擊更新。這次是不更新模型?怎麼來的?angular.js更新模型

https://jsfiddle.net/8evuoqLz/11/

<body ng-app="eApp"> 
<div id="sms" ng-controller="smsController" ng-cloak> 
    <ul id="paramsList" class="ulDynamic"> 
    <li ng-repeat="actionParam in actions.SmsResponseActionParmAndValue" id="li_{{actionParam.Order}}"> 
     <div ng-repeat="param in actionParam.ParmAndValue"> 
     <label ng-bind="param.ParmName"></label> 
     <input ng-model="param.Value" type="{{param.SmsInputType}}" /> 
     </div> 
    </li> 
    </ul> 
<br> 

的JavaScript

var app = angular.module('eApp', []); 
    app.controller('smsController', function ($scope) { 

    $scope.actions = {"SmsResponseActionParmAndValue":[{"Description":"Tag  User","Order":null,"ParmAndValue":[{"ParmId":9,"ParmName":"Tag Name","ParmType":"String","ParmVersion":"","Value":"","ValueId":null,"ValueVersion":"","ExtensionData":{},"Id":null,"Version":null}],"ExtensionData":{},"Id":10,"Version":"AAAAAAp96lg="}],"ExtensionData":{},"Id":null,"Version":null}; 

    $scope.updateDetails = function() { 
    console.log("update"); 
    console.log($scope.actions.SmsResponseActionParmAndValue); 
    }; 
}); 
+0

它適合我。 –

+0

也適用於我... – ShankarGuru

+0

它只在第一次使用...鍵入內容並點擊更新並注意Value屬性。它是第一次設置,現在鍵入另一個單詞並點擊更新按鈕,值不會更新。您必須在控制檯窗口中查看以告知... – Mark

回答

1

您錯過了ParmAndValue關鍵SmsInputType。現在每次更新Value

"ParmAndValue": [{ 
    "ParmId": 9, 
    "ParmName": "Tag Name", 
    "ParmType": "String", 
    "ParmVersion": "", 
    "Value": "", 
    "ValueId": null, 
    "ValueVersion": "", 
    "ExtensionData": {}, 
    "Id": null, 
    "Version": null, 
    "SmsInputType": "text" //<---- This one 
    }], 

下面是完整的代碼:

var app = angular.module('eApp', []); 
//Controller 
app.controller('smsController', function($scope) { 

    $scope.actions = { 
    "SmsResponseActionParmAndValue": [{ 
     "Description": "Tag User", 
     "Order": null, 
     "ParmAndValue": [{ 
     "ParmId": 9, 
     "ParmName": "Tag Name", 
     "ParmType": "String", 
     "ParmVersion": "", 
     "Value": "", 
     "ValueId": null, 
     "ValueVersion": "", 
     "ExtensionData": {}, 
     "Id": null, 
     "Version": null, 
     "SmsInputType": "text" 
     }], 
     "ExtensionData": {}, 
     "Id": 10, 
     "Version": "AAAAAAp96lg=" 
    }], 
    "ExtensionData": {}, 
    "Id": null, 
    "Version": null 
    }; 

    $scope.updateDetails = function() { 
    console.log("update"); 
    console.log($scope.actions.SmsResponseActionParmAndValue[0].ParmAndValue[0].Value); 
    console.log($scope.actions.SmsResponseActionParmAndValue); 
    }; 
}); 
+0

我補充說,但仍然不會更新ParmAndValue中的值。 Firefox – Mark

+0

您是否再次點擊「播放」?我也使用firefox,它工作正常。我要更新我的答案以顯示完整的代碼,但是我只更改了SmsInputType,並且對代碼進行了格式化。您可能會考慮清理瀏覽器緩存。 – CodeArtist

+0

瘋狂,所以console.log一直到Value,看起來都是正確的。但對象的console.log和遍歷它不?奇怪的是:https://jsfiddle.net/8evuoqLz/15/ – Mark

1

它爲我也。

可能原因爲您的文章:

1)瀏覽器的怪異行爲。 2)在那個「雜亂」的結構中查看錯誤的數據。

console.log($scope.actions.SmsResponseActionParmAndValue[0].ParmAndValue[0].Value); 
+0

奇怪的是,當我做你的上面的console.log它似乎顯示更新的值,但是當你導航它沒有的對象。見https://jsfiddle.net/8evuoqLz/14/ – Mark

+0

作品完美無瑕。我假設你在Firefox上使用Firebug,並習慣了它(不再是?)用新值更新舊輸出的奇怪行爲。 – gizmore

+0

我認爲這是一個在Firebug中的錯誤 – Mark

0

它爲我更新模型。我審查了代碼,它看起來很好。你確定你沒有看到調試控制檯中的前一個對象而不是新的對象嗎?

+0

我相信,確保你點擊更新,然後再次輸入內容並點擊更新並檢查值 – Mark