Javascript AngularJS指令更新父级,迭代延迟
我有这个指令,它使用隔离作用域Javascript AngularJS指令更新父级,迭代延迟,javascript,angularjs,Javascript,Angularjs,我有这个指令,它使用隔离作用域 priceApp.directive("clickToEdit", function() { var editorTemplate = '<div class="click-to-edit">' + '<div ng-hide="view.editorEnabled">' + '{{value}} ' + '<a ng-click="enableEditor()"
priceApp.directive("clickToEdit", function() {
var editorTemplate = '<div class="click-to-edit">' +
'<div ng-hide="view.editorEnabled">' +
'{{value}} ' +
'<a ng-click="enableEditor()">Edit</a>' +
'</div>' +
'<div ng-show="view.editorEnabled">' +
'<input ng-model="view.editableValue">' +
'<a ng-click="saveValue()">Save</a>' +
' or ' +
'<a ng-click="disableEditor()">cancel</a>.' +
'</div>' +
'</div>';
return {
restrict: "A",
replace: true,
template: editorTemplate,
transclude: true,
scope: {
value: "=clickToEdit",
},
link: function($scope,$element,$attrs) {
$scope.view = {
editableValue: $scope.value,
editorEnabled: false
};
$scope.enableEditor = function() {
$scope.view.editorEnabled = true;
$scope.view.editableValue = $scope.value;
};
$scope.disableEditor = function() {
$scope.view.editorEnabled = false;
};
$scope.saveValue = function() {
$scope.value = $scope.view.editableValue;
$scope.disableEditor();
$scope.$emit('update');
};
}
};
});
非常有趣的是$scope中的值。$on带有一个迭代返回。。。
若现在我把测试值1放在字段中,并从指令中调用save方法,我会得到旧值初始值,之后若我把测试2放在控制器中,我会得到文本1。
我想知道哪里不对 解决方案是使用$timeout进行黑客攻击
$scope.$on('update',function(){
$timeout(function(){
saveProduct($scope.product);
}, 0);
});
$scope.$on('update',function(){
saveProduct($scope.product);
});
$scope.$on('update',function(){
$timeout(function(){
saveProduct($scope.product);
}, 0);
});