在使用具有隔离作用域的指令时保存模型值不起作用
saving model value while using directive with isolated scope not working
我创建了一个名为<student>
的具有隔离作用域的指令,一切正常,能够使用隔离作用域"="将不同的数据传递给我的指令。但我无法保存数据中的更改。代码:
<div ng-app="mainApp" >
<div layout="column" flex ng-controller="StudentController">
<student operation="productadd"></student>
<button type="submit" ng-click="submit()">click</button>
<div style="float:left;background:#ccc;">
<!--<student operation="productmodify"></student>-->
</div>
</div>
</div>
app.js
var mainApp = angular.module("mainApp", ['ngMaterial']);
mainApp.controller('StudentController', ['$scope', '$mdDialog', function ($scope, $mdDialog) {
$scope.productadd = {};
$scope.productadd.colors = ['#a55466', '#8298a6', '#586a75', '#af1e2c', '#b3995d', '#7fc7af',
'#afb4bb', '#b9adad', '#899a9f', '#7d7d7d', '#525252', '#636c6f',
'#347d7b', '#b1b1b1', '#53748c', '#927f92', '#695769', '#a07c7c', '#6f7d86',
'#94b1c4', '#24122a', '#6c6169', '#6d5656', '#d19898', '#ac7c7c', '#aaaaaa',
'#bbcccc', '#999999', '#ccbbbb', '#779999', '#cdc1c5', '#8b8386'];
$scope.productadd.uomList = ['oz1', 'mm2', 'meter3'];
$scope.productadd.merchList = ['hand', 'tray', 'case', 'basket'];
$scope.productadd.nameList = ['Unit', 'Case', 'TRAY', 'Pallet 4 layers', 'Half Pallet 3 layers', ' Half Pallet 4 layers', ' Cut Case 24', 'Pallet 3 layers', 'Cut Case 12'];
$scope.productadd.orientationList = ['Front End', 'Front Side', 'Side End', 'Side Front', 'End Front', 'End Side'];
$scope.productadd.distributerTypeList = ['WHS', 'DSP', 'DSB', 'DSA', 'DSS', 'DSD'];
$scope.productmodify = {};
$scope.productmodify.colors = ['#a55466', '#8298a6'];
$scope.productmodify.uomList = ['oz', 'mm', 'meter'];
$scope.productmodify.merchList = ['hand', 'tray', 'case', 'basket'];
$scope.productmodify.nameList = ['Unit', 'Case', 'TRAY', 'Pallet 4 layers', 'Half Pallet 3 layers', ' Half Pallet 4 layers', ' Cut Case 24', 'Pallet 3 layers', 'Cut Case 12'];
$scope.productmodify.orientationList = ['Front End', 'Front Side', 'Side End', 'Side Front', 'End Front', 'End Side'];
$scope.productmodify.distributerTypeList = ['WHS', 'DSP', 'DSB', 'DSA', 'DSS', 'DSD'];
$scope.submit = function () {
console.log($scope.product);
}
}]);
mainApp.directive('student', function () {
return {
restrict: 'E',
templateUrl:'temp.html',
scope: {
productedit: "=operation"
},
}
});
示例代码
我已经添加了一个提交,正在尝试保存我的型号命名产品。但我变得不确定了。
请指导我如何解决这个问题。
按照您当前拥有html结构的方式,您已将提交表单按钮放置在指令模板之外。为了解决这个问题,基本上您只是传递dropdowns
的值。所以我建议您传递product
对象的值,它最初是{}
&将由指令模板修改。
HTML
<student operation="productadd" product="product"></student>
控制器
$scope.product = {}; //initially blank, filled up by directive.
指令
mainApp.directive('student', function() {
return {
restrict: 'E',
templateUrl: 'temp.html',
scope: {
productedit: "=operation",
product: '=' //pass product object here
},
}
});
Demo Plunkr
$scope.submit = function () {
console.log($scope.product);
};
它记录了一个未定义的范围属性,因此它永远不会在的任何位置保存任何更改
mainApp.directive('student', function () {
return {
restrict: 'E',
templateUrl: 'temp.html',
scope: {
productedit: "=operation"
},
}
});
- 在scope属性(它是该对象的最后一个属性)之后
- 您的控制器/链接功能在哪里
- 您应该将productadd移动到服务中
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 参数变量出现ngTable指令问题
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 使用每次都不同的transclude重复指令
- 打开一个模态并将其链接到AngularJS中的指令
- 如何将getJson的响应保存在全局变量中
- 从html创建一个指令,该指令按类名应用函数
- 按下按钮时保存cookie
- 如何使用 Angular JS 将数据保存在数据库中
- 将JSON对象传递给angular指令
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- 我未保存的更改指令需要适用于具有不同名称的所有表单
- 保存全局变量以供指令监视的最佳方法
- 在指令中从 attr 的角度保存手表表达式
- 如何访问离子头栏中保存为指令的当前视图的控制器
- 有没有办法只使用子指令作为保存内容的占位符
- 在使用具有隔离作用域的指令时保存模型值不起作用
- 自定义AngularJS指令的部分应该保存在哪里?
- Angular js指令在表单中未保存数据时显示浏览器后退按钮的警报