对于“ 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"/>