使用ng-change将值从ng模型传递到另一个ng模型时出错

时间:2018-08-21 04:28:26

标签: angularjs twitter-bootstrap angularjs-scope angularjs-ng-model angularjs-ng-change

对于“ a.html”的第一个输入,用户可以从下拉列表中选择或输入一个值。

对于第二个输入,默认值设置为与第一个输入相同。用户稍后可以在第二个输入中更改该值。然后,第二个输入中的值将传递给b.js的setPath函数。

在第一个输入中输入值“ android”后,第二个输入也将默认为“ android”。在删除第二个输入中的所有值并尝试输入新值后,出现控制台错误。 它说“无法在字符串'android'上创建属性名称。

a.html

 // first input
<input type="text" ng-model="result.c" data-auto-select="true"
       ng-change="result.path = result.c; checkIfMatch()"
       ng-blur="checkIfMatch()" bs-options="c as c.name for c in cs" />

 // second input
<input type="text" ng-disabled="!result.c.id" ng-model="result.path.name"/>

a.js

  $scope.checkIfMatch = function(){
      if(!$scope.result.c || $scope.result.c && $scope.result.c.id){
         return;
      } else{  
         var c = $scope.result.c;
          for(var i = 0; i < $scope.cs.length; i++){
            if(c == $scope.cs[i].name){
              $scope.result.c = $scope.cs[i];
              return;
            }
          }
      }
  };

b.js

function setPath() {
   $modal.open({
       templateUrl: '/xxx/a.html',
       scope: scope,
       controller: 'aController',
       windowClass: 'aModal'
      }).result.then(function(result){
     // scope.result.path.name to be the same value as second input in a.html
         var anchorTag = '<a href="' + result.c.id +'">Launch '+  result.path.name + '</a>';
 }

如果我在a.html上更改了第一个输入的ng-change代码,则将光标移出第一个输入后,第二个输入的值不会显示。仍然是twitter bootstrap bs-options的新手。

<input type="text" ng-model="result.c" data-auto-select="true"
       ng-change="result.path = result.c.name; checkIfMatch()"
       ng-blur="checkIfMatch()" bs-options="c as c.name for c in cs" />

//第二个输入

<input type="text" ng-disabled="!result.c.id" ng-model="result.path"/>

0 个答案:

没有答案