Javascript 使用隔离作用域不起作用的指令时保存模型值

Javascript 使用隔离作用域不起作用的指令时保存模型值,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我已经创建了一个名为的独立作用域指令,一切正常。我能够使用独立作用域“=”将不同的数据传递给我的指令。但我无法保存数据中的更改。 代码: 我已经添加了一个提交,正在尝试保存名为product的模型。但我正在变得不明确 请指导我如何解决这个问题 $scope.submit = function () { console.log($scope.product); }; 它记录一个未定义的范围属性,因此它永远不会在任何地方保存任何更改 mainApp.directive('student',

我已经创建了一个名为
的独立作用域指令,一切正常。我能够使用独立作用域“=”将不同的数据传递给我的指令。但我无法保存数据中的更改。 代码:

我已经添加了一个提交,正在尝试保存名为product的模型。但我正在变得不明确

请指导我如何解决这个问题

$scope.submit = function () {
  console.log($scope.product);
};
它记录一个未定义的范围属性,因此它永远不会在任何地方保存任何更改

mainApp.directive('student', function () {
  return {
    restrict: 'E',
    templateUrl: 'temp.html',
    scope: {
      productedit: "=operation"
    },
    }
});
  • 不应具有范围属性(它是该对象上的最后一个属性)
  • 控制器/链路功能在哪里
  • 您应该将productadd移动到服务

  • 按照您当前拥有html结构的方式,您已将“提交表单”按钮放置在指令模板之外。为了解决这个问题,基本上只需传递
    下拉列表的值。因此,我建议您传递
    product
    对象的值,该对象最初是
    {}
    &将由指令模板修改

    HTML

    <student operation="productadd" product="product"></student>
    
    指令

    mainApp.directive('student', function() {
      return {
        restrict: 'E',
        templateUrl: 'temp.html',
    
        scope: {
          productedit: "=operation",
          product: '=' //pass product object here
        },
      }
    });
    

    使用plunkr/fiddle添加一些相关代码。。
    <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
        },
      }
    });