【发布时间】:2014-07-29 13:00:57
【问题描述】:
当我按下“提交”按钮时,控制器中的fooController 等于'A',因此barController 获得分配值'A',这在UI 中得到确认:
bar in controller: A
按下“设置值”按钮后,fooController 通过绑定值“B”从指令更新,在 UI 中确认:
foo in controller: B
但是,当我按下“提交”按钮后,控制器中的fooController 仍然具有旧值“A”,因此$scope.barController 再次被分配了一个值“A”:
bar in controller: A
如何确保在第二次提交时fooController 具有正确的“B”值,并且barController 也被分配了“B”值?
HTML:
<div ng-app="app" ng-controller="Controller">
<script type="text/ng-template" id="directive-template.html">
foo in directive: {{fooDirective}}<br/>
<button ng-click="setValue()">set value</button>
</script>
<form data-ng-submit="getModel()">
<div ng-controller="Controller">
<button type="submit">submit</button><br/>
foo in controller: {{fooController}}<br/>
bar in controller: {{barController}}<br/>
<my-customer model="fooController"></my-customer>
</div>
</form>
</div>
还有 JS:
angular.module('app', [])
.controller('Controller', ['$scope', function($scope) {
$scope.fooController = 'A';
$scope.getModel = function() {
$scope.barController = $scope.fooController;
}
}])
.directive('myCustomer', function() {
return {
restrict: 'E',
scope: {
fooDirective: '=model'
},
controller: function ($scope) {
$scope.setValue = function() {
$scope.fooDirective = 'B';
};
},
templateUrl: 'directive-template.html'
};
});
【问题讨论】:
-
这个问题很难理解,因为所有的 foos、bars、b's 和 a's。
标签: forms angularjs angularjs-directive