我的问题是,在通过代码或任何插件更改输入值后,未提交给控制器的新值可以访问属性的旧值。 但如果输入新值可以改变输入值!只有打字! 模板:
<input class="form-control" id="ng-taskLineBackColor"
type="text" ng-model="data.preference.lineBackColor"/>
<input type="submit" ng-click="update()" class="btn btn-primary" value="save"/>
控制器:
.controller('taskCtrl', ['$scope', function ($scope) {
$scope.getRef = function () {
return //any code
};
$scope.save = function () {
var newValue = $scope.data.preference.lineBackColor;
//!!!-->newValue Contain old Value
};
}])
答案 0 :(得分:6)
任何更改ng-taskLineBackColor值的代码都需要触发一个名为“input”的特殊事件。这将通知AngularJS
$(function() {
$('#ng-taskLineBackColor').val('new value').trigger('input');
});
答案 1 :(得分:1)
要仅使用jQlite并且不使用jQuery,请尝试:
angular.element(document.querySelector('#ng-taskLineBackColor')).triggerHandler('input')
这是您在angular.element
包装的HTML元素上提供的API:
答案 2 :(得分:0)
我为你的案例创建了工作JSfiddle。
<input class="form-control" id="ng-taskLineBackColor"
type="text" ng-model="data.preference.lineBackColor"/>
<input type="submit" ng-click="update()" class="btn btn-primary" value="save"/>
我重命名了“save”函数,在“update”中在控制器中声明。
<强>更新强>
function MyCtrl($scope) {
$scope.update = function () {
var value = $scope.data.preference.lineBackColor;
alert("Typing value = '" + value + "'");
$scope.data.preference.lineBackColor = "Value from code";
var newValue = $scope.data.preference.lineBackColor;
alert("Typing value = '" + newValue + "'");
};
}