Привет У меня есть следующий фрагмент кода. Моя цель - разрешить создание нескольких div и их положение, текст, высоту и ширину привязаны к модели контроллера.angularjs не может назначить переменную области видимости внутри функции связи
appModule.controller('textController', function($scope){
var box = {x: '0', y: '0', height: '100px', width: '200px', text: 'this is the default text'};
$scope.textBoxes = [box];
$scope.addNewTextBox = function(){
console.log("creating new textbox!!!");
$scope.textBoxes.push(box);
};
});
appModule.directive('tbox', function($document){
return {
restrict: "E",
template: '<div><div ng-transclude></div>',
transclude: true,
scope: {
model: "=",
},
link: function postLink(scope, element, attrs, ctrl){ //the scope here is the object's scope
var length = scope.$parent.textBoxes.length;
console.log(length);
scope.model = scope.$parent.textBoxes[length-1];
}
}
});
У меня возникли проблемы. Я не могу присвоить переменную модели области переменной textBoxes в контроллере, заявив, что
Error: Non-assignable model expression: undefined (directive: tbox)
at Error (<anonymous>)
at h (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js:43:213)
at Object.<anonymous> (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js:43:326)
at Object.e.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js:87:13)
at Object.e.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js:89:198)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js:16:239
at Object.d [as invoke] (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.
Любая идея, почему?
У вас есть объект, называемый 'model' на родительской области? Мне интересно, если он наткнулся на привязку в вашем атрибуте 'scope'. – KayakDave
@ KayakDave, нет, мне нужно? Извините, но я все еще не понят о понятиях изолированных областей. Я сделал свою модификацию из этого http://plnkr.co/edit/VFbP9h, хотя – goh
Ну, ваш '=' в рамках 'scope' запрашивает привязку к объекту, называемому' model', поскольку вы ничего не указываете на справа от знака равенства. Вам нужно '=' вообще? – KayakDave