У меня есть директива с переменными области видимости, которые зависят от других переменных сферы. Я ожидал бы, что если переменная области с правой стороны уравнения изменится, она обновит левый, но это, похоже, не происходит.Угловая переменная диапазона JS зависит от другой переменной области и не обновляется
В приведенном ниже примере при запуске selectProduct() он должен обновлять информацию о продукте, включая название продукта, но он не работает, если я не обновляю scope.title напрямую, как в прокомментированной строке внизу функции.
controller:function($scope){
$scope.products = $scope.productGroup.products;
$scope.selected_product = $scope.productGroup.products[$scope.productGroup.selected_product];
$scope.title = _.isEmpty($scope.selected_product) ? $scope.productGroup.title : $scope.selected_product.title;
$scope.excerpt = _.isEmpty($scope.selected_product) ? $scope.productGroup.excerpt : $scope.selected_product.excerpt;
$scope.description = _.isEmpty($scope.selected_product) ? $scope.productGroup.description : $scope.selected_product.description;
$scope.selectProduct = function(){
$scope.selected_product = $scope.productGroup.products[1];
console.log($scope.selected_product);
//$scope.title = $scope.selected_product.title;
}
},
Спасибо. Но что, если у меня есть какая-то внешняя функция, измените значение '$ scope.productGroup.selected_product' с 0 на 1, и теперь я хочу, чтобы scope.selected_product обновлялся соответственно против явной установки $ scope.selected_product. Угловые не знают, что один объект области зависит от другого свойства объектов области? Мне кажется, что поскольку значение select_product зависит от свойства productGroup.selected_product, то изменение свойства select_product также должно обновлять выбранное_продукт в цикле дайджеста. – michael
Вы можете создать ручные часы, подобные этой $ $. $ Watch ('productGroup.selected_product', function() {$ scope.selectedProduct = ...} '. Но если честно, зачем выгружать эту задачу в Angular? I сказал бы, что это намного лучший дизайн API, если ваша productGroup предоставляет метод 'setSelectedProduct (index)', а затем внутренне устанавливает 'productGroup.selected_product' экземпляр продукта (а не индекс). А затем в вашем шаблоне просто привязывайтесь к 'productGroup.selectedProduct'. Имеет ли это значение для вас? – Christoph
Да, я смущен относительно того, где поместить функцию selectedProduct, хотя это именно то, что я хотел сделать. Моя группа продуктов - это всего лишь данные json от службы. был бы правильным способом превратить его в более крупный объект, чтобы я мог добавить к нему API (FYI, у меня несколько групп продуктов на одном экране, поэтому я не мог придумать, как правильно это реализовать с фабрикой). – michael