简体   繁体   中英

isteven-multi-select output model not working with templates

I am using isteven-multi-select in my application for multiple selection. Everything works fine until I add isteven-multi-select div in another template. In that case, I dont get any values in output-model.

Plunker

Here , I am addding it in another template

<body ng-controller="MainCtrl">
   <div ng-include="'test.html'"></div>
   <button ng-click="a()">Print output</button>
   <p>selected scope: {{ selectedScope }}</p>
</body>

test.html --

 <section>
  <div>
    <div isteven-multi-select
        input-model="scopes"
        output-model="selectedScope"
        button-label="name"
        item-label="name"
        tick-property="ticked"
    >
    </div>
   </div>
</section>

ng-include creates new scope that inherits all parents scope properties. So you should pass parents selectedScope to output-model attribute:

<section>
   <div>
        <div isteven-multi-select
            input-model="scopes"
            output-model="$parent.selectedScope"
            button-label="name"
            item-label="name"
            tick-property="ticked"
        >
        </div>
    </div>
</section>

You can read this article for better understanding of scopes.

it works once you include the element in your main controller view

<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.2.x" src="https://code.angularjs.org/1.2.21/angular.js" data-semver="1.2.21"></script>
    <link rel="stylesheet" href="angular-multi-select.css" />
    <script src="angular-multi-select.js"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl">
    <section>
   <div>
        <div isteven-multi-select
            input-model="scopes"
            output-model="selectedScope"
            button-label="name"
            item-label="name"
            tick-property="ticked"
        >
        </div>
    </div>
</section>
    <button ng-click="a()">Print output</button>
    <p>selected scope: {{ selectedScope }}</p>
    <p>selected scope: {{ scopes }}</p>
</body>
</html>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM