这一整天这个问题一直困扰着我。
为什么在我输入文本框时名称不会更新?所有的操作都按规范进行,可能出了什么问题?
总结一下: 我试图构建一个递归指令,当它遇到对象时,它会再次调用自身,直到达到字符串级别。当它达到字符串级别时,它将提供一个可更改字符串的输入框(即对象中键/值对的值)。
为什么在我输入文本框时名称不会更新?所有的操作都按规范进行,可能出了什么问题?
总结一下: 我试图构建一个递归指令,当它遇到对象时,它会再次调用自身,直到达到字符串级别。当它达到字符串级别时,它将提供一个可更改字符串的输入框(即对象中键/值对的值)。
这里是JSFiddle
<body ng-app="test">
<div ng-controller="ctrl">
<my-dir the-model="greet"></my-dir>{{greet}}</div>
</body>
angular.module('test', [])
.controller('ctrl', function ($scope) {
$scope.greet = {
"name": "Joe",
"surname": "Norris"
};
})
.directive('myDir', function ($compile) {
var theTemplate =
'<div ng-if="isObject(theModel)">' +
'<div ng-repeat="(k,v) in theModel">'+
'<my-dir the-model="theModel[key]"></my-dir>'+
'</div>'+
'</div>'+
'<div ng-if="!isObject(theModel)">' +
'<input type="text" ng-model="theModel">'+
'</div>'
return {
restrict: 'E',
scope: {
theModel: '='
},
controller: function ($scope) {
$scope.isObject = function (val) {
if (typeof val === 'object') {
console.log("isObject");
return true;
} else{
console.log("is not Object");
return false;
}
}
},
link: function (scope, element) {
element.html(theTemplate); //.append(theTemplate);
$compile(element.contents())(scope);
}
}
});
ng-model
中使用原始类型。原始类型没有继承性。一般的经验法则是,ng-model
中应该总是有一个点。 - charlietflng-model
应该有一个点是什么意思? - Raphi