angular js - 不使用ng-model

时间:2015-07-27 11:28:48

标签: javascript angularjs

我使用angular js指令生成了动态表单HTML,我想使用我提供的值(值可能来自数据库或数组)为生成的文本框分配值

当我没有动态发送任何参数时,它通常通过以下代码运行并将值分配给文本框

 $scope.submitted = function() {
    $scope.title = "submitted";
  };

但是当我向表单发送动态值时,它就无法正常工作。

在单击并显示来自该函数的警报但该值未按模型分配给文本框时,从该指令调用该函数。 这是代码

$scope.submitted = function(par) {
    alert(par); 
    $scope.title = par;
  };

请查看以下plunker上的代码:

http://plnkr.co/edit/hcM7DX46fDl68axs2ol2?p=preview

1 个答案:

答案 0 :(得分:2)

问题是每个dynamic指令都是在隔离的子范围内编译的。因此,当您稍后设置外部范围属性title时,它不会影响本地指令范围。

你可以做的是在$scope.submitted函数集ngRepeat子范围标题内,并将此值传递给带有范围配置对象的指令:

$scope.submitted = function(par) {
    this.title = par; // this points to individual ngRepeate scope object
};

并在指令配置中:

scope: {
    title: '=model',
    param1: '@',
    formFn: '&'
},

并使用像这样的指令

<div dynamic param1="{{lang}}" form-fn="submitted(lang)" model="title"></div>

演示: http://plnkr.co/edit/Nb2yh0wlGEyuOqQN8YS3?p=preview